我在使用mySQL时遇到这个问题。我的结果= [{'email': 'bernie@shrimp.com'}]
,但在执行email = results[0]['email']
时得到TypeError: tuple indices must be integers or slices, not str
问题是当我在本地运行它的时候,它运行的很好,我怎么得到bernie@shrimp.com
?
users是一个表
代码:
cursor.execute('SELECT email FROM users WHERE username = %s', [attempted_username])
email_dict = cursor.fetchall()
print(email_dict)
session['email'] = email_dict[0]['email']
控制台:
[{'email': 'bernie@shrimp.com'}]
4条答案
按热度按时间ybzsozfc1#
fetchall
的结果是元组列表,而不是dict
列表。您的查询结果只有一个字段:电子邮件在索引0。
您可以像这样重写代码:
或者,在您的情况下,只有一个结果:
我想,还可以用途:
hi3rlvi22#
这可以与其他内容一起使用。
nuypyhwy3#
fetchall
返回元组列表。您需要通过列的序号而不是名称来访问它:vxf3dgd44#
cursor()方法调用中的
dictionary=True
参数允许使用字典来表示行,而不是元组。