Hier ist meine Situation: Ich habe eine Tabelle in einer Datenbank, wie folgend:UPDATE mysql Fehler mit 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
Und ich will nach Runden de type Spalte aktualisieren, wenn die Bedingungen, aber ich bin immer ein Fehler in Zeile 29:
mysql.connector.errors.InternalError: Unread result found
ich bin mir ziemlich sicher, dass seine die Art und Weise im die Abfrage zu machen, und ich suchte bereits weitere Fragen zu diesem Thema, bevor diese eine Öffnung, aber ich konnte sie nicht ohnehin lösen.
EDIT 1: die Abfrage geändert und angewendet die Lösung durch GZC gab den Fehler loszuwerden, aber jetzt aktualisiert er die ganze Art Spalte statt nur die Fälle, in denen die wenn sie wahr ist
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()
Was mache ich falsch?
Dank
EDIT 2: GZC Solver es wieder :)
Gibt es einen Stack-Trace? Von welcher Linie kommt der Fehler? – khelwood
Ich glaube nicht, dass Sie zwei Abfragen gleichzeitig auf demselben 'Cursor' ausführen können. Sie materialisieren besser die Ergebnisse der ersten Abfrage (in einer "Liste") und führen dann die zweite Abfrage mit dem Cursor aus. –
der Fehler kommt aus der Zeile 29 "curse.execute (" UPDATE ... "@ @@ khelwood –