我有一个python脚本,它执行一些简单的SQL。在
c.execute("CREATE TABLE IF NOT EXISTS simpletable (id integer PRIMARY KEY, post_body text, post_id text, comment_id text, url text);")
command = "INSERT OR IGNORE INTO simpletable VALUES ('%s', '%s', '%s', '%s')" % (comments[-1].post_body, comments[-1].post_id, comments[-1].comment_id,
comments[-1].url)
c.execute(command)
c.commit()
但当我执行它时,我得到一个错误
sqlite3.OperationalError: table simpletable has 5 columns but 4 values were supplied
为什么它不自动填充id
键?在
如果不指定目标列,
VALUES
将为所有列提供值,而您没有这样做。在在任何情况下,都建议指定目标列。如果由于任何原因,表中列的顺序发生更改,则查询不会中断。在
尝试指定列名称以确保值的目标不依赖于顺序。 例如:
如果希望id列自动递增,请确保在dbms中添加Identity属性,或类似的自动递增。 例如:
请记住,您的脚本不准备更改表结构,只准备创建。在
在Python3.6中,我做了如下所示的操作,并且成功地插入了数据。在
由于找不到
Null
,我使用了None
作为自动递增的ID。在ID结构如下。在
^{pr2}$相关问题 更多 >
编程相关推荐