Kyl*_*son 5 python mysql sqlalchemy
我有一个用 Python 编写的 Web 应用程序,使用 SQLAlchemy 进行数据访问。我正在尝试获取插入的最后一个插入 ID。当我使用 PyODBC 时,这段代码可以工作,但现在使用 SQLAlchemy 时,它似乎不起作用。 LAST_INSERT_ID()似乎始终返回一个相差一的 ID。
query = text("""INSERT INTO HR_PunchBatch
(StoreID, UserID, Source,Timestamp,Status)
VALUES (:StoreID,:UserID,:Source,NOW(),:Status)""")
g.engine.execute(query,
StoreID=StoreID,
UserID=session['UserID'],
Source=source,
Status='New')
batch_id = g.engine.execute('SELECT LAST_INSERT_ID() AS id').fetchone()
return batch_id['id']
Run Code Online (Sandbox Code Playgroud)
关于为什么这会减少 1 的任何想法(例如返回 8 而不是 9)?
仍然不确定为什么查询返回不准确的 ID。但是,我似乎通过获取连接对象而不是使用隐式/无连接执行来解决该问题。也许它之前抓取了两个不同的连接,因此提供了不一致的结果:
conn = g.engine.connect()
query = text("""INSERT INTO HR_PunchBatch
(StoreID, UserID, Source,Timestamp,Status)
VALUES (:StoreID,:UserID,:Source,NOW(),:Status)""")
conn.execute(query,
StoreID=StoreID,
UserID=session['UserID'],
Source=source,
Status='New')
batch_id = conn.execute('SELECT LAST_INSERT_ID() AS id').fetchone()
return batch_id['id']
Run Code Online (Sandbox Code Playgroud)