Python SQLite 的 executemany() 始终按顺序执行吗?
在Python中,我正在使用SQLite的executemany()函数来往一个表里插入数据。如果我把一堆要添加的东西放进executemany()里,它会按照我给的顺序插入这些东西吗?我之所以关心这个,是因为我用的是INTEGER PRIMARY KEY来自动增加主键。出于各种原因,我需要在添加数据的同时,知道新生成的自增主键是什么(在添加之前或之后,但大致在那个时候),所以如果能假设每次插入的主键都是我传给executemany()的列表中每个元素的顺序加一,那就太方便了。我在开始添加数据之前,已经知道了当前最大的主键,所以我可以用一个变量来跟踪我期望executemany()给每一行插入的主键。这种想法靠谱吗,还是说我想得太多了?
(我想另一种方法是用execute()一个一个插入,并用sqlite3_last_insert_rowid()来获取主键,但这样对于成千上万的条目来说会慢很多。)
1 个回答
3
Python的sqlite3
模块会按照正确的顺序执行带有列表值的语句。
注意:如果代码已经知道要生成的ID值,那么你应该明确地插入这个值,这样如果这个预期不对,就会出现错误。