Python MySQL 语句输出:0 或 1

Python MySQL Statement output: 0 or 1

我试图从我的数据库中获取信息并打印它,但不幸的是,它没有从 Table 中打印信息,而是打印 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)

谢谢。

execute() 方法只是 returns 受影响的行数。

您必须使用 .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()

这将为您提供字典列表而不是列表列表。