2017-05-21 22 views
0

パラメータ化されたクエリを使用してテーブルからエントリを選択しようとしています。彼らは結果を返さない。コードは以下の通りである:Python:sqlite3のパラメータ化クエリでは結果が得られません

var = str.capitalize(var) 
selected = db.execute('select a, b, c from table1 where a=(?)', [var]) 

varが常に3つの小文字の文字列(例えば「XXX」)である、「」列は、データベース内のTEXT型のものであり、3つの大文字の文字列(例えばが含まれています「XXX」)。

私も恐ろしいを試してみました:

selected = db.execute('select a, b, c from table1 where a="%s"' % str.capitalize(var)]) 

私はそれが引用符を省略し、実行方法の問題だと信じていたが、それはどちらか動作しませんでしたので。私にすべての結果を得た唯一のものだった:私は、Windows 10上でのPython 3.6.0を使用しています

selected = db.execute('select a, b, c from table1 where a="XXX"') 

、誰かhereは、それが問題になる可能性があります示唆したが、その解決策はどちらか私のために動作しませんでした。

+0

あなたがテーブルの数行 –

+0

38 GBP 2017年2月24日5.1011 39 GBPを共有することができます2017-02-27 5.0646 40 GBP 2017-02-28 5.0617 – DCzo

+0

どの列がa、b、cですか? 'var'には何が入っていますか? –

答えて

0

capitalizeは、最初の文字のみを大文字に変換します。 、キャップにすべてを変換するupper()

パラメータは、タプル/辞書として渡す必要があり

使用

selected = db.execute('select a, b, c from table1 where a=?', (var.upper(),)) 

それとも

selected = db.execute('select a, b, c from table1 where a=:var', {"var":var.upper()}) 

を使用するには、あなたがする必要があるhere

+0

ありがとう、どちらもうまくいません – DCzo

0

続きを読みますを使用これも動作します

var = var.upper() 
selected = db.execute('select a, b, c from table1 where a=?', (var,)) 

:これを試してみてください、大文字にすべてにそれを変換するために10

var = var.upper() 
selected = db.execute('select a, b, c from table1 where a="%s"'%var] 
+0

それはまさに問題でした...ありがとう! – DCzo

+0

クール、それは助けてうれしい:) –

関連する問題