2016-11-25 12 views
0

SQLiteクエリ内に変数を配置しようとしていますが、ドキュメントを読んでいます。ここで似たような質問やインターネット上の記事を読んでいますが、私はこのコードをHACEとき:私はのように、文字列にUSER_IDの値を変換する場合はPython変数を使用してSQLiteクエリをアセンブルする

ValueError: parameters are of unsupported type

import sqlite3 
import sys 
import time 

user_id = (int(time.time())) 

db_conn = sqlite3.connect('data.db') 
db_curs = db_conn.cursor() 

db_curs.execute('insert into Users values(?, "John Doe", "[email protected]", "52g5f2gf5gfg2f45f4f")', user_id) 
db_curs.execute('select * from Users') 
for registry in db_curs.fetchall(): 
    print(registry) 

db_conn.commit() 

db_curs.close() 
db_conn.close() 

を私はデータを挿入しようとしているラインで次のエラーを取得しますこれは:

user_id = (str(int(time.time()))) 

私は次のエラーを取得する:EPOCHからの経過時間が10の番号な長さであるので、私はそこに問題は明らかに、ですが、私はそれが何であるかを知らないと仮定していること

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 10 supplied.

注意してください。 executeニーズに

+0

'execute'は、2番目の引数としてプレースホルダの引数の順序を想定し、その代わりに、あなたは、単一の値を渡しています。それを文字列に変換すると、シーケンスが外れてしまいますが、これも間違っています。引数をタプルまたはリストで囲みます。 –

答えて

0

二番目のパラメータのタプルであることを:

db_curs.execute('insert into Users values(?, "John Doe", "[email protected]", "52g5f2gf5gfg2f45f4f")', (user_id,)) 
+0

私はドキュメントに何か気付かなかったことを発見しました。このようにタプルに昏睡を追加するだけです:** user_id =(int(time.time())、**) –

関連する問題