2017-07-26 17 views
0

テーブル 'my_table'から列 'item'と 'feature'を選択する次のSQLクエリがあります。列 'item'と 'other_feature'の値のペアが一致します。WHERE句の "VALUES"を含むsqlite selectクエリは、sqliteでは正しく返されますが、python sqlite3では正しく返されません。

select item, feature from my_table 
where (item, other_feature) in (VALUES ('item1', 'A'), ('item1', 'B')); 

Here is an example of the dataset used.

sqlite3のコマンドラインインターフェースで期待どおりにこのクエリは動作します。しかし、同じデータベースを使用して、sqlite3モジュールをPythonで次のコードを使用するとエラーが発生します。 Pythonのsqlite3のモジュールで期待通りになぜこのクエリは機能していない

sqlite3.OperationalError: near ",": syntax error 

import sqlite3 
query = "select item, feature from my_table where (item, other_feature) in (VALUES ('item1', 'A'), ('item1', 'B'))" 
conn = sqlite3.connect("data/my_database.db") 
conn.execute(query) 

は、私は次のエラーを取得しますか? "であなたの文字列を引用

答えて

2

試してみてください。

query = 'select item, feature from my_table where (item, other_feature) in (VALUES ("item1", "A"), ("item1", "B"))' 

あなたはまた、

select sqlite_version(); 

またはpythonでは、あなたの

import sqlite3 
sqlite3.sqlite_version 

はPythonの分布があるsqliteのバージョンかどうかを確認したい場合がありますあなたのコマンドラインインターフェイスのものより低くない、特にifそれは3.15.2より前です。

+0

'' 'で引用するときに同じエラーが発生します。 – tmoisan

+0

実際に' sqlite3.sqlite_version'バージョン3.13.0でこの問題が発生し、3.16.2で問題なく動作します。 – tmoisan

関連する問題