返回最后插入的ID sqlalchemy sqlite

时间:2012-07-20 21:01:56

标签: python sqlite sqlalchemy

我正在尝试使用sqlite从sqlalchemy插入中获取最后一个插入的行id。看起来这应该很容易,但我还没有设法搞清楚,到目前为止我的搜索中找不到任何东西。我是python的新手,我知道有一些类似的帖子,所以我希望这不是重复。下面是一些简单的示例脚本:

from sqlalchemy import *    
engine = create_engine('sqlite:///myTest.db',echo=False)
metadata = MetaData()

dbTable1 = Table('dbTable1', metadata,Column('ThisNum', Integer),Column('ThisString', String))
metadata.create_all(engine)
dbConn = engine.connect()

insertList={}
insertList['ThisNum']=1
insertList['ThisString']='test'
insertStatement = dbTable1.insert().values(insertList)
lastInsertID = dbConn.execute(insertStatement).inserted_primary_key

返回的值为空。我使用

获得相同的结果
lastInsertID = dbConn.execute(insertStatement).last_inserted_ids()

我可以在插入后使用单独的语句获取最后一个rowid:

lastInsertID = dbConn.execute('SELECT last_insert_rowid();')

但这并不能保证在执行之间没有访问数据库,因此返回的ID可能不正确。最后,我尝试在一次执行中执行insert和select语句,例如:

lastInsertID = dbConn.execute('INSERT INTO "dbTable1" ("ThisNum", "ThisString") VALUES (1, "test"); SELECT last_insert_rowid();')

但是这会给出错误:sqlite3.Warning:你一次只能执行一个语句。

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案