I'm running into this issue when using mySQL. My result = [{'email': '[email protected]'}]
but I'm getting an TypeError: tuple indices must be integers or slices, not str
when I'm doing email = results[0]['email']
The thing is when I'm running this locally it works perfectly. How do I get [email protected]
?
users is a table
Code:
cursor.execute('SELECT email FROM users WHERE username = %s', [attempted_username])
email_dict = cursor.fetchall()
print(email_dict)
session['email'] = email_dict[0]['email']
Console:
[{'email': '[email protected]'}]
The result of fetchall
is a list of tuples, not a list of dict
.
Your query result have only one field: email at index 0.
You can rewrite your code like this:
rows = cursor.fetchall()
for row in rows:
email = row[0]
Or, in your situation where there is only one result:
session['email'] = rows[0][0]
I think, you can also use:
row = cursor.one()