有没有办法在 SQL Server 2005 中使用 pyodbc 插入并请求 scope_identity()?
我有一个很棒的pyodbc库。我尝试了下面的代码,它本来应该插入一行数据并返回这行的ID,但结果没有成功。顺便说一下,我在服务器上使用的是SQL Server 2005,客户端是Windows操作系统。
...
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 个回答
3
使用 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
...
9
试试这个,用一句话加上OUTPUT这个部分。
cur = con.execute(
"insert into sometable OUTPUT INSERTED.idcolumn values('something')"
)
row = cur.fetchone()
lastrowid = row[0]
补充:这样做可以解决Joe S.提到的问题。