2012-02-10 8 views
2

通常、SQL文のみをSELECT条件として使用できます(WHERE句を使用)。しかし、Python(またはSQLを呼び出す言語)ステートメントをSELECT条件として使用すると便利なことがあります。python文をSQLiteのSELECT条件として使用するには?

例えば、テーブルPointが格納されているin the document of sqlite3 module of pythonの例があります。ただし、構造Pointを使用してテーブルをクエリするのは難しいです。さて、SELECT p FROM table WHERE P.x=4を実行して、x座標が4のすべてのポイントを選択します。P.xはSQLステートメントではなくPythonステートメントなので、SELECTステートメントは機能しません。

もう1つの例は、SELECT条件がSQL言語にとって複雑すぎる場合です。言うことですが、mod 4が3であるすべての整数を選択したい、またはこのようなものを選択したいとします。

だから、これを行うという考えはありますか?ありがとうございました!

編集:zam664の回答に関しては、最初の例では必ずP_XとP_Yを使用することができます。しかし、pが未知の長さのリスト(アダプタを使用してテーブルに格納できる)であれば、私はSELECT p FROM table WHERE 2 in pにします。これは便利なケースだと思います。

+2

ちょうどメモ;データベースはPythonではなくSQLのみを実行するので(Pythonクエリは自動的にSQLに変換される必要があります)、Pythonで記述するとSQLで表現するには複雑すぎます。 Pythonが複雑性に関してお手伝いできる唯一のことは、自動的にデータベース内のクエリの一部を実行し、結果を戻すとコードに一度追加することです。 –

答えて

0

SQLとPythonコードの間で負荷を分割する必要があります。 SQLがifの大部分を得て、複雑なものについては残りの部分を記録するように、テーブル内のデータを適切に構造化する必要があります。

SQLクエリーが機能するように、そのほとんどをSQLiteで取得できるはずです。あなたはあなたのデータを分割する必要があります。例えば、xとyのフィールドを持つポイントは、SQLiteではP_XやP_Yのような2つのフィールドに分割する必要があります。

SQLiteは、オブジェクトDBMSではないリレーショナルDBMSです。オブジェクトDBMSが必要な場合、SQLiteはタスクの間違った製品です。

+0

あなたの答えをありがとう。ただし、この分割データメソッドが失敗する場合もあります。詳細については、EDITを参照してください。 – Roun

0

データは、

SELECT point FROM test WHERE point LIKE '%x=4% 

誤った表と列の名前を使用して予約すると、次のようにすることができます。

+0

上記の運が良かったですか? – Kristofer

関連する問題