1.有两种方法一直是直接是用OutPut
cur = con.execute(
"insert into sometable OUTPUT INSERTED.idcolumn values('something')"
)
cur.rs(RecordSet)里面就包含了 刚插入的ID
2.Set NoCount On
#insert
def insert(conn,table,**kv):
""" eg: insert(conn,'test',id=2,name=5) sql:insert into test(id,name) values(2,5)"""
sqlcolums=[]
sqlparams=[]
for k,v in kv.items():
sqlcolums.append(k)
sqlparams.append(GBK(v))
sqlparams=tuple(sqlparams)
sql='SET NOCOUNT ON;'
sql+=' insert into '+table+' ('+','.join(sqlcolums)+') values ('+','.join('?'*len(sqlcolums))+');'
sql+='SELECT SCOPE_IDENTITY();'
sql+='SET NOCOUNT OFF;'
cur=conn.cursor()
cur.execute(sql,sqlparams)
id=cur.fetchone()[0]
return int(id) if IsPositiveNum(id) else id
’如果未加‘Set nocount on ’ Select Scope_identity() 在结果集里面 始终为None