我試圖使用pyodbc
(與Python 2.7)調用存儲過程以將記錄插入到SQL Server 2012表中。我正在通過臨時表。pyodbc不會拋出SQL Server錯誤
我甩了我的SQL和當通過SQL Server管理控制檯執行時,它產生下面的外鍵錯誤:
Msg 547, Level 16, State 0, Procedure spInsertBondTickerValues, Line 26
The INSERT statement conflicted with the FOREIGN KEY constraint "FK__BondTickerValue__756D6ECB".
The conflict occurred in database "QuantDev", table "dbo.Tickers".
The statement has been terminated.
然而,pyodbc
沒有引發異常。我將如何測試得到的光標或連接以知道發生了問題,以及如何獲取錯誤消息?
非常感謝。
編輯以下是完整的SQL文本:
DECLARE @rawTbl [dbo].TickerValueTableType
INSERT INTO @rawTbl (Ticker, BBName, LastValue, ValueTime, SourceDescr) VALUES
('IBM', 'Equity', 179.230000, '2013-11-01 00:00:00.000000', 'Bloomberg'),
('SPX', 'Index', 1803.710000, '2013-12-10 00:00:00.000000', 'Bloomberg')
EXEC [dbo].spInsertBondTickerValues @rawTbl
EDIT 2下面是相關Python代碼:
def execSQLwithCommit(self, sql):
cursor = self.conn.cursor()
cursor.execute(sql)
self.conn.commit()
其中,連接已經通過
指出過self.conn = pyodbc.connect(app = appName,
driver = '{SQL Server Native client 11.0}',
server = server,
database = db,
Trusted_Connection = 'yes')
請有關Python代碼更新,其中pyodbc.Cursor是instanti並執行。 – Bryan
@beargle完成。謝謝。 – gt6989b
它看起來像你的SQL腳本缺少任何分號。我想知道它是否被解析。 SQL Server控制檯可能足夠聰明來解析它,但驅動程序同樣聰明嗎?我還懷疑腳本有三個不同的語句,每個語句都可能需要單獨的'.execute'調用。 – 9000