Python MySQL语句输出:0或1

时间:2018-01-21 19:41:24

标签: python mysql pymysql

我正在尝试从我的数据库中获取信息并打印它,但不幸的是,它不是打印表中的信息,而是打印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)

谢谢。 enter image description here

1 个答案:

答案 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()

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