有没有办法使用pyodbc将scope_identity()插入sql server 2005

时间:2010-12-23 18:54:51

标签: python sql-server pyodbc

我有这个伟大的pyodbc lib。我尝试下面的代码,它应该插入一行并返回行ID但它不起作用。顺便说一句,我在服务器上使用sql server 2005,客户端是windows os

...
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
...
有些想法吗?

2 个答案:

答案 0 :(得分:5)

尝试使用OUTPUT子句

的一个语句
cur = con.execute(
         "insert into sometable OUTPUT INSERTED.idcolumn values('something')"
         )

编辑:这应该解决Joe S评论的问题。

答案 1 :(得分:0)

使用SCOPE_IDENTITY()是可行的方法,因为由于触发器的原因,使用OUTPUT和@@ IDENTITY存在局限性和怪癖。

使用代码片段,您只需向nextset添加一个调用即可获取ID。

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