【发布时间】:2016-11-25 21:32:55
【问题描述】:
我正在尝试在 SQLite 查询中放置一个变量,我已经阅读了文档,我在这里阅读了类似的问题和 Internet 上的文章,但是当我遇到此代码时,我不断收到相同的两个错误:
import sqlite3
import sys
import time
user_id = (int(time.time()))
db_conn = sqlite3.connect('data.db')
db_curs = db_conn.cursor()
db_curs.execute('insert into Users values(?, "John Doe", "johndoe@yahoo.com", "52g5f2gf5gfg2f45f4f")', user_id)
db_curs.execute('select * from Users')
for registry in db_curs.fetchall():
print(registry)
db_conn.commit()
db_curs.close()
db_conn.close()
我在尝试插入数据的行中出现以下错误:
ValueError: 参数的类型不受支持
如果我将 user_id 的值转换为字符串,如下所示:
user_id = (str(int(time.time())))
我收到以下错误:
sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 10 个。
请注意,自 EPOCH 以来的时间长度为 10 个数字,所以我认为显然存在问题,但我不知道它是什么。
【问题讨论】:
-
execute期望占位符的参数序列作为第二个参数,但您传递的是单个值。将其转换为字符串会产生一个序列,这也是错误的。将参数包装在元组或列表中。