4

我有这个很棒的 pyodbc 库。我尝试下面的代码,它应该插入一行并返回行 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
...

一些想法?

4

2 回答 2

6

试试这个,一个带有OUTPUT子句的语句

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

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

于 2010-12-23T18:57:33.783 回答
1

使用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
...
于 2020-06-20T20:28:56.540 回答