2010-12-23 119 views
2

我有這個偉大的pyodbc庫。我嘗試下面的代碼,它應該插入一行並返回行ID,但它不起作用。順便說一句,我在服務器上使用SQL Server 2005和客戶端是Windows操作系統有沒有辦法做一個插入請求scope_identity()使用pyodbc到sql server 2005

... 
con = pyodbc.connect('conectionString', autocommit = True) 
cur = con.execute(
        "insert into sometable values('something'); 
        select scope_identity() as id" 
       ) 
for id in cur: 
    print id 
... 

一些想法?

+0

什麼錯誤註釋的問題嗎? – gbn 2010-12-23 18:59:55

+2

根據[本FAQ頁面](http://code.google.com/p/pyodbc/wiki/FAQs):「使用」SELECT @@ IDENTITY「。 請注意@@ IDENTITY返回最後生成的值,所以如果觸發器導致第二次插入,您將得到觸發器的生成值 SQL Server還提供了SCOPE_IDENTITY(),它應該解決這個問題。不幸的是,SQL Server ODBC驅動程序爲每個執行調用調用一個內部存儲過程,確定範圍,使其無法使用。「 – 2010-12-23 19:05:02

回答

5

試試這個,一個語句與OUTPUT條款

cur = con.execute(
     "insert into sometable OUTPUT INSERTED.idcolumn values('something')" 
     ) 

編輯:這應該避開喬S.

相關問題