Python Mysql TypeError: 'NoneType' object is not subscriptable
12,109
st = str(row[2])
is an error because cursor.fetchone()
returns None
when there are no more rows.
Fix it with one of these approaches:
row = cursor.fetchone()
while row:
do_stuff()
row = cursor.fetchone()
or
for row in cursor:
do_stuff()
or
while True:
row = cursor.fetchone()
if row is None: # better: if not row
break
do_stuff()
Author by
Varanka
Updated on June 22, 2022Comments
-
Varanka almost 2 years
conn = MySQLdb.connect (host = "localhost", user="root", passwd="xxxx", db="xxxxx") cursor = conn.cursor() cursor.execute ("SELECT * FROM pin WHERE active=1") while (1): row = cursor.fetchone() st = str(row[2]) pin = str(row[1]) order = str(st)+str(pin) if row == None: break sendSerial(order) conn.close()
Why st = str(row[2]) become error? How should retrieve rows from the database into a variable?
Thank You for your answer.
-
Steven Rumbalski about 12 years
do_stuff
is nothing. It's just a way of saying "the rest of your code goes here".