2017-09-19 9 views
0

どのように私は、10、20、34と1で、おそらく結果はリストにPythonの反復

import pymysql 
import json 

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', 
db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

cursor = conn.cursor() 

select_query = "select * from users where id = " 
ids = ["10", "20", "34", "1"] 
for x in ids: 
    var = select_query + x 
    # print(var) 
    print(list(cursor.execute(var))) 
+0

どのような結果が得られましたか?希望の結果はどのように異なっていますか? –

+0

エラーを取得しています - TypeError: 'int'オブジェクトは反復可能ではありません。どこが間違っているのかわからない –

+0

スタックトレースは、エラーが発生した行を示します。この場合、どのラインですか? –

答えて

1

をstr xを型キャストするのを忘れて、cursor.execute()機能は、あなたの誤差が現れている理由である、intを返します。

import pymysql 

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', 
         db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

cursor = conn.cursor() 

lst = [] 

select_query = "select * from users where id = " 
ids = ["10", "20", "34", "1"] 
for x in ids: 
    var = select_query + x 
    # print(var) 
    cursor.execute(var) 
    lst.extend(cursor.fetchall()) 

print(lst) 

や辞書など:あなたは1、リスト内の結果のすべてをしたい場合は、

import pymysql 

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', 
         db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

cursor = conn.cursor() 

select_query = "select * from users where id = " 
ids = ["10", "20", "34", "1"] 
for x in ids: 
    var = select_query + x 
    # print(var) 
    cursor.execute(var) 
    print(list(cursor.fetchall())) 

または、 実際に結果を返すためにfetch functionsのいずれかを使用

そして、それを呼び出すことになるでしょう

import pymysql 

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', 
         db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

cursor = conn.cursor() 

results = {} 

select_query = "select * from users where id = " 
ids = ["10", "20", "34", "1"] 
for x in ids: 
    var = select_query + x 
    # print(var) 
    cursor.execute(var) 
    results[x] = list(cursor.fetchall()) 

print(results) 
+0

ありがとう:)うまくいきました –

0

ことを期待されるすべての4人のidのためのSELECT文を実行しますPyMySQL docsによると

import pymysql 
import json 

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', 
db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

cursor = conn.cursor() 

select_query = "select * from users where id = " 
ids = ["10", "20", "34", "1"] 
for x in ids: 
    var = select_query + str(x) # here 
    # print(var) 
    print(list(cursor.execute(var))) 
+0

同じエラーが発生しました - スタックトレース。 トレースバック(最新のコール最後) のファイル "C:¥xampp¥htdocs¥sandbox¥for.py" TypeError: 'int'オブジェクトは反復可能ではありません –