返回上次插入的ID sqlalchemy sqli

2024-09-30 20:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从sqlalchemy insert with sqlite获取最后插入的行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

返回的值为空。我得到同样的结果使用

^{pr2}$

我可以在插入后使用单独的语句获取最后一个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:一次只能执行一个语句。在

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


Tags: executesqlitesqlalchemycreate语句engineinsertmetadata