开发者

is there a way to do a insert an request the scope_identity() using pyodbc to sql server 2005

I have this great pyodbc lib. I try the code below, it supposed to insert a row and return the row id but it didn't work. by the way I'm using sql server 2005 on server and client is 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
...

some i开发者_如何学运维dea?


Try this, one statement with the OUTPUT clause

cur = con.execute(
         "insert into sometable OUTPUT INSERTED.idcolumn values('something')"
         )
row = cur.fetchone()
lastrowid = row[0]

Edit: This should get around the issue commented by Joe S.


Using SCOPE_IDENTITY() is the way to go as there are limitations and quirks using OUTPUT and @@IDENTITY because of triggers.

Using your code snipped, you just need to add a call to nextset to get the 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
...
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜