2012-03-22 13 views
2

以下の非コメントコードは、OperationalError:near "?"コメント行は問題なく動作します。私はここで何が欠けていますか?'?'を使用するFlaskとSQLite3のプレースホルダはOperationalErrorを生成します。

g.db.execute('INSERT INTO ? (date,value) VALUES (?,?)', \ 
[session['user'],request.form['date'],request.form['value']]) 

#g.db.execute('INSERT INTO '+session['user']+' (date,value) VALUES (?,?)', \ 
#     [request.form['date'],request.form['value']]) 

答えて

4

列名または表名にプレースホルダを使用することはできません。あなたはこれを試すことができます:

user = session['user'] 
data = request.form['date'] 
value = request.form['value'] 
g.db.execute('INSERT INTO {} (date,value) VALUES (?,?)'.format(user), (data, value)) 
+0

これは意味がある、ありがとう! – monostop

+0

これは何らかの理由がありますか?ありがとう:) – lithiium

+0

@lithiiumテーブル名はプレースホルダ( '? ')を受け入れません。明示的に記述する必要があります。 – kev

3

テーブル名をパラメータ化することはできません。あなたはそれのために文字列フォーマット/連結を使用しなければなりません。

関連する問題