SQLite的错误绑定参数0:可能不支持的类型是什么意思?

时间:2012-08-29 18:09:16

标签: python sqlite python-db-api

我有Python代码:

cursor.execute('INSERT INTO users (email, password, password_hint, state, last_saved) VALUES (?, ?, ?, ?, DATETIME("now"));',
((get_cgi('email'),), (password,), (get_cgi('password_hint'),), (get_cgi('current'),)))

这会产生以下错误:

Traceback (most recent call last):
  File "./create_account.cgi", line 73, in <module>
    ((get_cgi('email'),), (password,), (get_cgi('password_hint'),), (get_cgi('current'),)))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

在崩溃之前放置的get_cgi('email')的调试日志返回了预期的电子邮件地址,因此我希望TEXT类型的列'email'应该能够处理它。

什么是SQLite3抱怨?我是否错过了DB-API2的一些细节?

1 个答案:

答案 0 :(得分:3)

我不确定你为什么要创建所有嵌套元组,但是删除它们会让事情变得更好;不支持将元组插入(至少以这种方式)到文本字段中。

cursor.execute(
    'INSERT INTO users (email, password, password_hint, state, last_saved) ' +
    'VALUES (?, ?, ?, ?, DATETIME("now"));',
    (get_cgi('email'), password, get_cgi('password_hint'), get_cgi('current')))