Вот моя ситуация: я получил таблицу в базе данных, в следующем:UPDATE Ошибка MySQL с Python
nome_imagem estado type
57260-tracker-_tracker_face awake 0
57261-tracker-_tracker_face drowsiness 1
57268-tracker-_tracker_face noface 2
57289-tracker-_tracker_face distracted 3
57290-tracker-_tracker_face awake 1
57291-tracker-_tracker_face drowsiness 2
57293-tracker-_tracker_face noface 3
И я хочу, чтобы обновить де колонки типа в соответствии с Serveral, если условия, но я получаю ошибка в строке 29:
mysql.connector.errors.InternalError: Unread result found
Я довольно уверен, что его путь им сделать запрос, и я уже искал другие вопросы по этому поводу, прежде чем открыть этот, но я не смог решить эту проблему так или иначе.
EDIT 1: Измененный запрос и применяется раствор дал от gzc избавиться от ошибки, но теперь он обновляет все колонки типа, а не только в тех случаях, когда, если верно
import mysql.connector
from mysql.connector import errorcode
import os
cnx = mysql.connector.connect(user='root', database='empresa')
cursor = cnx.cursor()
fileDir = os.path.dirname(os.path.realpath(__file__))
textDir = os.path.join(fileDir, "test_img")
query = ("SELECT nome_imagem, estado, type FROM alertas ")
cursor.execute(query)
results = list(cursor)
for (nome_imagem, estado, type) in results:
print nome_imagem, estado
my_file_name = nome_imagem+'.txt'
my_file = open("test_img/"+my_file_name, 'r')
content = my_file.readline()
status = content.strip().split()[-1].split("=")[1]
face = content.strip().split()[0].split("=")[1]
print status, face #1 tem face, 0 nao tem
if (face == '1' and estado == status): #se tem cara e o estado que tem na bd for igual ao estado que o programa classificou = correto
print "correto"
cursor.execute("UPDATE alertas SET type='1' WHERE nome_imagem=nome_imagem")
if (face == '1' and estado == 'drowsiness' and status == 'awake') or (face == 1 and estado == 'awake' and status == 'drowsiness'): #verificar isto
print "trocado"
if (estado != '' and face == '0'): # se tiver estado mas nao tiver cara classifico logo como errado 3
print "errado"
if (estado == 'distracted' and face == '1'): # se tem cara mas for distracted deixo normal pois nao consigo classificar
print "normal"
cursor.close()
cnx.close()
Что я делаю неправильно?
Благодаря
EDIT 2: gzc решатель снова :)
Есть ли трассировка стека? Какая строка является ошибкой? – khelwood
Я не думаю, что вы можете делать сразу два запроса на одном и том же «курсоре». Вы лучше материализуете результаты первого запроса (в 'list'), а затем запускаете второй запрос с помощью курсора. –
ошибка исходит из строки 29 «curse.execute (« UPDATE ... »@ khelwood –