[英]Execute SQL for different where clause from Python
我試圖通過python代碼打印SQL結果,在這里我試圖從for循環中傳遞where子句的不同謂詞。 但是代碼僅從循環中獲取最后一個值並給出結果。
在下面的示例中,我有兩個不同的ID值“ aaa”和“ bbb”。 id值='aaa'共有4條記錄,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()
我得到的結果如下
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
在for
循環中,您正在格式化sql語句,以將“ {inpt}”替換為“ aaa”。 但是,在使用該值做任何事情之前,您會立即用“ bbb”版本覆蓋它。
您將需要:
類似於以下內容的列表將為您提供包含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()
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()
縮進是您的問題,請根據您的需要更新代碼...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.