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 に答える