2017-04-09 7 views
0

私は、SQLの結果をpythonコードで出力しようとしています。ここでは、where句のfor述語とは異なる述語を渡そうとしています。しかし、コードはループから最後の値を取って結果を与えるだけです。Pythonから異なるwhere句のSQLを実行する

以下の例では、2つの異なるid値 'aaa'と 'bbb'があります。 id値= 'aaa'のレコードとid値= 'bbb'のレコードが2つあります。 以下のコードは、id値= 'bbb'のid値 'aaa'ではない結果を与えるだけです。

私は何をしているのかを特定するのに役立つ人はいますか?

import pymysql 

db = pymysql.connect(host="localhost", user="user1", passwd="pass1", db="db1") 

cur = db.cursor() 

in_lst=['aaa', 'bbb'] 

for i in in_lst: 
    Sql = "SELECT id, val, typ FROM test123 Where id='{inpt}'".format(inpt=i) 

print(Sql) 
cur.execute(Sql) 

records = cur.fetchall() 
print(records) 

db.close() 

私はあなたのforループ内

C:\Python34\python.exe C:/Users/Koushik/PycharmProjects/Test20161204/20170405.py 
SELECT id, val, typ FROM test123 Where id='bbb' 
(('bbb', 5, '1a'), ('bbb', 17, '1d')) 

Process finished with exit code 0 

答えて

0
import pymysql 

db = pymysql.connect(host="localhost", user="root", passwd="1234", db="sakila") 

cur = db.cursor() 

in_lst=['1', '2'] 

for i in in_lst: 
    Sql = "SELECT * FROM actor Where actor_id='{inpt}'".format(inpt=i) 
    print(Sql) 
    cur.execute(Sql) 
    records = cur.fetchall() 
    print(records) 

db.close() 

インデントはあなたの問題であり、ニーズに応じて、コードを更新してください。..

+0

はい、インデントのみでした。 Pythonの構文では非常に奇妙です。 –

0

以下のように取得していた結果、あなたは "AAA" と "{INPTを}"​​ 置き換えるためのSQL文をフォーマットしています。ただし、その値で何かをする前に、すぐに "bbb"バージョンで上書きします。

あなたはどちらかに必要があるでしょう:

  1. ストアループの次の反復の前に何とか結果、その後、ループの外でそれらを処理。
  2. ループ内で結果を処理します。

次のようなものは(あなたにはfetchAllから両方の結果を含むリストが表示されます)を呼び出します:

import pymysql 

db = pymysql.connect(host="localhost", user="user1", passwd="pass1", db="db1") 

cur = db.cursor() 

in_lst=['aaa', 'bbb'] 
records = list() 
for i in in_lst: 
    Sql = "SELECT id, val, typ FROM test123 Where id='{inpt}'".format(inpt=i) 

    print(Sql) 
    cur.execute(Sql) 

    records.append(cur.fetchall()) 
print(records) 

db.close() 
+0

いいえまだaaaの値が返されていません。何とかしてループのためにそれが複数行のループであることを認識できないように思えます。これはforループのように実行されるため、print文はsqlをid = aaaとして出力しません。私はどのように複数の行(私たちは{}を与えることができるCのような)のpythonでforループを書くことができます –

関連する問題