2011-06-27 1 views
2

私はidsのリストをpythonで持っています。たとえば、次のようにPythonでのSQL - INの使用

x = [1,2,3,4,5,6] 

と私は、これらのレコードのIDがXであることを条件に、私(mysqlの)データ・ベースのレコードのリストを選択します。以下のようなものです:

私はこれを誰かがPythonで行うことができるのか分かりません。 %sをSQL文字列に使用した例をいくつか見てきました。しかし、変数がリストである場合、これは機能しません。私はこれをどのようにすることができるか知っていますか?これらのすべてが優良の数字であることが知られている場合 おかげ

答えて

3

このような何か試してみてください:それはアンドリューのメソッドの動作点に留意する必要がある

(1,2,3,4,5,6) 
+0

"IN()"が(少なくともSQL Serverでは)有効な構文ではないように見えるので、xが空リストの場合は注意が必要です。 –

1

さて、あなたは単にあなたが、彼らは数字であることを知っているが、場合はそれらのいずれかからだったかもしれない

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(x)) 
を呼び出すことができますユーザーは、その後、私が使用する可能性があります:

"SELECT * FROM mytable WHERE ID IN ({0})".format(','.join(list(map(int,x)))) 

formatは適切な索引で交換を行います。 joinは、[]を持たないように使用されます。 listはすべてをリストに変換し、mapは関数をlist/tuple/iterableに適用します。しかし、Python 3では、mapはジェネレータを返しますが、これは必要なものではありません。あなたはリストが必要です。したがって、list(map(x、y))はmap(x、y)のリスト形式を返します。

+0

'(%s)' % ','.join(map(str,x)) 

これはあなたが有効なIN句としてMySQLを送信するために使用できる文字列を与えると同様に、より多言語の構文であるため、私はフォーマットを好みます。 – cwallenpoole

関連する問題