Python MySQL 连接器 fetchone 不返回字典

Python MySQL Connector fetchone not returning dict

我有 table 个用户,我想在 Flask 应用程序中显示。我一直在尝试获取要在控制台中打印出来的值,但我似乎无法弄清楚如何使用键(即字段名称)来做到这一点。我有以下内容:

cur = CONN.cursor()
cur.execute("SELECT * FROM users")
users = cur.fetchone()

print(users)

输出为:

(1, 0, 'James', 'Brubacker', 'Anaheim', 1)

当我这样做时:

print(users['first_name'])

我得到:

TypeError: tuple indices must be integers or slices, not str

我假设 fetchone() return 默认情况下编辑了一个命令,但事实并非如此。我怎样才能把它写成 return 字典?

否,fetchone 默认 returns 一个元组。这是 dbAPI 标准的一部分。您可以说 cur = CONN.cursor(dictionary=True),如精美文档中所述。

fetchone() 和 fetchall() return 元组默认不是字典。要访问元组中的数据,如果要检索第一个元素,则应使用索引然后执行 row[0] 并且可以通过 users['first_name'].

访问

如果您需要以字典形式获取结果,请使用以下任一选项,

选项 1

在 MySQLdb.connect.

的末尾添加参数 cursorclass=MySQLdb.cursors.DictCursor

样本

conn = MySQLdb.connect(host="host",
                        user="username",
                        passwd="password",
                        db="databasename", 
                        cursorclass=MySQLdb.cursors.DictCursor)

选项 2

更新与return字典的连接

样本

 cur = CONN.cursor(dictionary=True)
    cur.execute("SELECT * FROM users")
    users = cur.fetchone()
    print(users['first_name'])