2017-01-26 11 views
1

私はPython/Flaskを使用しており、自分のDBにクエリを試みています。SQL動作しない場所を選択してください。

conn = sqlite3.connect('./flaskdb.db') 
cur = conn.cursor() 
cur.execute('SELECT email FROM users WHERE email=\'%s\'', "name") 

Iは、行/エントリの一つとして2列、email, passwordname, passwordを有します。

なぜこれが機能しないのですか?

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 7 supplied. 
+0

少なくとも、エラーの原因となっているpython文全体が表示されるように、完全な例を投稿してください。いつものように、[最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)は、私たちがあなたを助けやすくします。 – 2ps

+0

フルコードを表示してください。通常、準備されたステートメントでは、APIがあなたのために処理するので、パラメータの周りに単一引用符を使用することについて心配する必要はありません。 –

+0

@ 2ps、コードを更新 – garoo

答えて

0

私はあなたがここで準備文を使用することでうんざりしていると思います。このコードを試す:

conn = sqlite3.connect('./flaskdb.db') 
cur = conn.cursor() 
name = '[email protected]' 
cur.execute('SELECT email FROM users WHERE email=?', (name,)) 

修正代わり%sのプレースホルダ、他のデータベースのために使用され得るものであり、後者として?を使用することを含みます。また、nameという変数をバインドしたい場合は、その変数も引用符で囲まないようにしてください。

cur.execute('SELECT password FROM users WHERE email=(?)', (email,)) 

プレースホルダとしてタプルと(?)としてそれを必要とする:

+0

ありがとう!その%sは許可されていませんが、式を期待しています – garoo

+0

%sは型エラー – garoo

+0

を与えます。申し訳ありませんが、私は構文エラーとsqlite3.Operationerror – garoo

0

は、私は解決策を持っています。

関連する問題