我有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的一些细节?
答案 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')))