2016-11-11 72 views
2

我有一個MS SQL CREATE腳本列表,我試圖自動執行每個腳本的過程。由於此CREATE腳本不會產生任何記錄,我希望自動化腳本能夠返回如下所示的SSMS輸出消息: 'Command executed successfully'使用pyodbc讀取SSMS輸出消息

我可以使用pyodbc讀取此輸出消息嗎? 這裏是我用來執行腳本的代碼示例:

conn = pyodbc.connect(r'DRIVER={SQL Server};SERVER=%s;Trusted_Connection=True;'% (db_conn_string)) 
    cursor = conn.cursor() 
    cursor.execute(query) 

回答

2

我強烈懷疑pyodbc不能捕捉DDL語句產生的「控制檯」消息。但是,可能不需要捕獲「Command executed successfully」消息,因爲如果命令是而不是成功執行,則會發生異常。

所以Python代碼只需.execute聲明,捕獲發生的任何異常,並進行相應處理,如

try: 
    crsr.execute("DROP TABLE dbo.nonexistent") 
    print("INFO: DROP TABLE succeeded.") 
except pyodbc.ProgrammingError as err: 
    error_code = err.args[0] 
    if error_code == "42S02": # [table] does not exist or you do not have permission 
     print("INFO: DROP TABLE did not succeed.") 
    else: 
     raise # re-raise unexpected exception 
+0

這幫助了很多...是否有捕獲控制檯消息提供任何軟件包,如果pyodbc無法做到這一點? – Neelan

+0

@ .Naran - 我認爲IronPython可以通過.NET'SqlClient'程序集來完成,也許使用[這裏]描述的技術(http://stackoverflow.com/q/1880471/2144390)。 –