2010-12-23 47 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.

相关问题