2017-12-18 13 views
0

私はSQLiteを学習しており、値を格納し、下のプログラムの抽出されたコード行を使用して行を取得する文字列を作成しようとしていますが、 "execute() " SQLite3のDB APIは、このデータベースを参照するための正しい方法であると言うので、私は理解していない:SQLiteの実行エラー

import sqlite3 
dbb = sqlite3.connect('finance.db') 
db = dbb.cursor() 
username = request.form.get("username") 

#query database for username 
rows = db.execute("SELECT * FROM users WHERE username = :username", \ 
username=username) 

答えて

0

documentationは言う:

sqlite3モジュールは、プレースホルダの2種類のサポート:質問マーク(qmarkスタイル)と名前付きプレースホルダ(styleという名前)。

はここで両方のスタイルの例です:

# This is the qmark style: 
cur.execute("insert into people values (?, ?)", (who, age)) 

# And this is the named style: 
cur.execute("select * from people where name_last=:who and age=:age", {"who": who, "age": age}) 

キーワード引数はサポートされていません。しかし、あなたが明示的に辞書に変換(またはこれを行いexecuteのラッパーを書く)ことができます:

db.execute("SELECT ... :username", dict(username = username)) 
+0

おかげで、私はそのビットを逃しました。 qmarkスタイルは、私がまだ考慮していなかったテンプレートのメソッドに対して完全に機能します。 – tiff

関連する問題