如何使用Python在SQLite中插入行后检索插入的id?我的table是这样的:
id INT AUTOINCREMENT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50)
我插入了一个包含示例数据username="test"
和password="test"
的新行。如何以事务安全的方式检索生成的ID?这是一个网站解决方案,其中可能有两个人同时插入数据。我知道我可以获得最后读取的行,但我认为这不是事务安全。有人能给我一些建议吗?
2条答案
按热度按时间kcrjzv8t1#
您可以使用cursor.lastrowid(请参阅“可选的DB API扩展”):
如果两个人同时插入,只要他们使用不同的
cursor
s,cursor.lastrowid
将返回cursor
插入的最后一行的id
:请注意,使用
executemany
一次插入多行时,lastrowid
将返回None
:zvms9eto2#
评论中的所有字幕都归功于@martjn Pieters:
您可以使用函数
last_insert_rowid()
:last_insert_rowid()
函数从调用该函数的数据库连接返回最后插入的行的ROWID
。last_insert_rowid()
SQL函数是sqlite3_last_insert_rowid()
C/C++接口函数的 Package 器。SQLite 3.35的
RETURNING
子句:在
INSERT
、UPDATE
和DELETE
语句中返回插入行的请求列。Python用法: