鉴于我创建的SQLite表,有问题的字段为TEXT
,以下内容失败:
hsh = hashlib.sha1("".join(some_list)).hexdigest()
db_setup(hsh)
我收到错误:
InterfaceError: Error binding parameter 2 - probably unsupported type.
def db_setup(my_hash, oavals)
to_insert = (my_hash,)
('INSERT INTO position VALUES \
(null, ?, ?, null, ?, ?, ?, ?, ?)',(0, 0, to_insert,
oavals["a"], oavals["b"],
oavals["c"], oavals["d"]))
如果我在57
def中替换手动int或字符串(例如"hello"
或to_insert
代替db_setup
),它可以正常工作,这让我相信由于某种原因,它正在跳过哈希。我觉得我在这里遗漏了一些明显的东西。
表格架构:
'CREATE TABLE position \
(id INTEGER PRIMARY KEY, position INTEGER, displayline INTEGER, \
header TEXT, digest TEXT, conkey TEXT, consecret TEXT, \
acckey TEXT, accsecret TEXT)'
答案 0 :(得分:2)
失败是因为to_insert
是一个元组,而不是你想要插入的值。
尝试将第一行更改为:
to_insert = my_hash
或者更好的是,只需将my_hash
放入参数列表即可。
以下是一个例子:
>>> hsh = '49cb6536afc7e4a4b3a94eb493aae4d52b8f6a60'
>>> conn = sqlite3.connect(':memory:')
>>> c = conn.cursor()
>>> c.execute("CREATE TABLE t (i TEXT);")
>>> c.execute("INSERT INTO t VALUES (?)", (hsh,)) # tuple works
<sqlite3.Cursor object at 0x011A35E0>
>>> c.execute("INSERT INTO t VALUES (?)", ((123,),)) # tuple within tuple doesn't
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.