【问题标题】:Python SQLite executemany() always in order?Python SQLite executemany() 总是按顺序排列?
【发布时间】:2014-10-31 23:38:44
【问题描述】:

在 Python 中,我使用 SQLite 的 executemany() 函数和 INSERT INTO 将内容插入到表中。如果我通过 executemany() 一个要添加的东西的列表,我可以依靠 SQLite 从列表中按顺序插入这些东西吗?原因是因为我使用 INTEGER PRIMARY KEY 来自动增加主键。由于各种原因,我需要在我将其添加到表中时(之前或之后,但在那个时间左右)知道一行新的自动递增主键,所以简单地假设会非常方便我传递executemany()的列表的每个连续元素的主键都会上升一个。在开始添加内容之前,我已经拥有最高的现有主键,因此我可以增加一个变量来跟踪我希望 executemany() 为每个插入的行提供的主键。这是一个合理的想法,还是假设太多?

(我想另一种方法是将 execute() 与 sqlite3_last_insert_rowid() 逐一使用,但这比对数千个条目使用 executemany() 慢。)

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

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

    注意:如果代码已经知道要生成的 ID 值,那么你应该显式地插入这个值,这样如果这个期望被证明是错误的,你就会得到一个错误。

    【讨论】:

    • 好吧,如果我复制一个现有的主键,它只会给我一个错误,而不是如果我跳过一个自动递增的主键......仍然,好主意,谢谢。
    猜你喜欢
    • 2016-08-31
    • 2015-12-09
    • 2015-07-02
    • 2015-04-09
    • 2018-03-10
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多