我正在尝试从我的数据库中获取信息并打印它,但不幸的是,它不是打印表中的信息,而是打印0或1。
为什么这样做? 有人可以帮助我吗?
sql = ("SELECT code FROM testing WHERE email = ((%s))")
sql2 = a.execute(sql, (fullemail))
sqlusername = ("SELECT username FROM testing123 WHERE code = ((%s))")
username = a.execute(sqlusername, (sql2))
print("Test3")
print(username)
答案 0 :(得分:3)
execute()
方法只返回受影响的行数。
您必须使用.fetchall()
或等效的(例如.fetchone()
...)DBAPI方法来获取结果集。
此外,单独在单个值周围使用括号:(fullemail)
将不会被识别为元组,您需要显式添加逗号,以便Python将其识别为元组:(fullemail, )
sql = ("SELECT code FROM testing WHERE email = %s")
a.execute(sql, (fullemail, ))
sql2 = a.fetchall()
print(sql2)
sqlusername = ("SELECT username FROM testing123 WHERE code = %s")
a.execute(sqlusername, (sql2[0][0], ))
username = a.fetchall()
print("Test3")
print(username)
取决于您使用的库:
您还可以使用DictCursor
将结果集行设为dict
而不是list
。用法如下:
from pymysql.cursors import DictCursor
import pymysql
db = pymysql.connect(host="", user="", passwd="", cursorclass=DictCursor)
with db.cursor() as cur:
cur.execute("SELECT ...")
results = cur.fetchall()
这将为您提供字典列表,而不是列表列表。