0

我有 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 的一些细节吗?

4

1 回答 1

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')))
于 2012-08-29T18:18:21.090 回答