在Python中,我将SQLite的executemany()函数与INSERT INTO配合使用,以将内容插入表中。如果我通过executemany()列出要添加的内容,是否可以依靠SQLite从列表中按顺序插入这些内容?原因是因为我使用INTEGER PRIMARY KEY自动递增主键。由于各种原因,我需要在将行添加到表中之前(在此之前或之后,但在那个时候)知道行的新的自动递增主键,因此简单地假设我传递executemany()的列表的每个连续元素,主键都会上升一个。在开始添加内容之前,我已经具有最高的主键,因此我可以增加一个变量来跟踪我希望executemany()赋予每个插入行的主键。这是一个好主意,还是假设太多?

(我猜另一种选择是与sqlite3_last_insert_rowid()一对一地使用execute(),但这要比对数千个条目使用executemany()慢。)

最佳答案

Python的sqlite3模块以正确的顺序执行带有列表值的语句。

注意:如果代码已经知道要生成的ID值,则应显式插入该值,以便在此预期错误的情况下出错。

10-08 19:07