2

Ich benutze ein Python-Programm, um eine MySQL-Datenbank zu manipulieren.Cursor schließen Fehler in Python MYSQLConnection

Wenn Sie versuchen, den Windows Server 2012 Task Scheduler verwenden, funktioniert es nie, der Bericht sagt, dass es erfolgreich war, aber es gibt kein Ergebnis.

Nach der Verwendung eines Powershell-Skript zum Aufruf des Python-Programms funktioniert es immer noch nicht, wenn es vom Task-Scheduler verwendet wird (, während es funktioniert, wenn ich es selbst ausführen).

Hier Teil berichtet als abgehört:

try: 
    dbconfig = read_db_config() 
    conn = MySQLConnection(**dbconfig) 
    cursor = conn.cursor() 
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC' OR filliere='ETI' OR filliere='CGP'" 
    cursor.execute(delstatmt) 
    conn.commit() 
except Error as e: 
    print(e) 

finally: 
    cursor.close() 
    conn.close() 

der Fehler an der Leitung ist "cursor.close()": UnboundLocalError: lokale Variable 'Cursor' vor

Zuordnung referenzierten

Anmerkung: Es funktioniert, wenn es nicht vom Taskplaner verarbeitet wird.

Edit: Shubham Namdeo Lösung arbeiten, obwohl das Problem nur auf conn.close() Ich habe es auch in der "Versuch" verschoben. Ich verstehe nicht, warum es in der ersten Form nicht funktioniert hat, da es funktionierte, wenn ich es selbst ausführte. Während andere Fehler aufgetreten sind, sind sie nicht mit dieser Frage verbunden. Hier ist der endgültige Code:

try: 
    dbconfig = read_db_config() 
    conn = MySQLConnection(**dbconfig) 
    cursor = conn.cursor() 
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC' OR filliere='ETI' OR filliere='CGP'" 
    cursor.execute(delstatmt) 
    conn.commit() 
    cursor.close() 
    conn.close() 
except Error as e: 
    print(e) 
+0

Haben Sie überprüft, ob 'conn = MySQLConnection (** dbconfig)' richtig funktioniert? Ist dies nicht der Fall, wird kein Cursor erstellt und in "finally" wird Python den Fehler auslösen. –

+0

Danke, und wie bei Ihrer Bearbeitung habe ich die Antwort auch aktualisiert. –

Antwort

1

meinen eigenen Kommentar hier Zitiert

Have you checked whether conn = MySQLConnection(**dbconfig) is working correctly? If it is not, then no cursor will be ever created and in finally python will raise error.

Versuchen Sie diesen Code anstelle von Ihnen:

try: 
    dbconfig = read_db_config() 
    conn = MySQLConnection(**dbconfig) 
    cursor = conn.cursor() 
    delstatmt = "DELETE FROM `event` WHERE filliere='IRC' OR filliere='ETI' OR filliere='CGP'" 
    cursor.execute(delstatmt) 
    conn.commit() 
    cursor.close() 
    conn.close() 

except Error as e: 
    print(e) 

Dies könnte Ihr Problem lösen.

Verwandte Themen