Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Mysql TypeError: 'NoneType' object is not subscriptable

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.

like image 278
Varanka Avatar asked Sep 06 '25 03:09

Varanka


1 Answers

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()
like image 162
Steven Rumbalski Avatar answered Sep 07 '25 21:09

Steven Rumbalski