我有一个 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()
Run Code Online (Sandbox Code Playgroud)
但是当我执行它时,我收到错误
sqlite3.OperationalError:表 simpletable 有 5 列,但提供了 4 个值
为什么它不自动填写密钥id?
在Python 3.6中,我做了如下所示,数据已成功插入。
我用于None自动递增 ID,因为Null找不到。
conn.execute("INSERT INTO CAMPAIGNS VALUES (?, ?, ?, ?)", (None, campaign_name, campaign_username, campaign_password))
Run Code Online (Sandbox Code Playgroud)
ID结构如下。
ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
Run Code Online (Sandbox Code Playgroud)
如果您没有指定目标列,VALUES则预计会为所有列提供值,而您没有这样做。
INSERT
OR IGNORE INTO simpletable
(text,
post_id,
comment_id,
text)
VALUES ('%s',
'%s',
'%s',
'%s');
Run Code Online (Sandbox Code Playgroud)
在任何情况下都建议指定目标列。如果由于任何原因表中列的顺序发生变化,查询不会中断。
| 归档时间: |
|
| 查看次数: |
17421 次 |
| 最近记录: |