Ich habe versucht, ein Python-Programm zu pushen und auszuführen, um mit Herokus ClearDB eine Verbindung zu MySQL herzustellen, konnte jedoch keine Verbindung mit der Meldung "Fehler 2055 Verbindungsverlust ~" herstellen.
Infolgedessen war es kein Fehler in Bezug auf MySQL, sondern die Art und Weise, wie das Programm geschrieben wurde, aber ich möchte es für diejenigen zusammenfassen, die unter demselben Problem leiden.
Nachdem ich ClearDB hinzugefügt hatte, dachte ich zunächst, dass einige Einstellungen erforderlich sind, also untersuchte ich verschiedene Dinge und versuchte die Migration und so weiter. Ich konnte jedoch eine Verbindung zu ClearDB selbst herstellen, und selbst wenn ich das Programm ausführte, das nur durch Herstellen einer Verbindung zur Datenbank ausgeführt wird, trat kein Fehler auf, und ich konnte die Ursache nicht verstehen.
Zu diesem Zeitpunkt fand ich diesen Artikel und las ihn irgendwie, aber als Ursache für einen SQL-Operationsfehler ** Beim Ausführen einer Abfrage nach dem Trennen der Verbindung ** Wurde geschrieben. Ich hielt es für selbstverständlich und versuchte, als nächstes zu gehen, aber plötzlich schaute ich auf meinen Code und stellte fest, dass dies die Ursache war.
Weil mein Code so gemacht wurde:
main.py
#Modulimport
#Programm für Datenbankoperationen importieren
import database
#Hauptverarbeitung
#Funktionsaufruf in Datenbank
database.get_data()
database.py
import mysql.connector
#Legen Sie das Verbindungsziel fest und stellen Sie eine Verbindung her
def get_data():
#Abfrage ausführen
connection.commit()
connection.close()
Wenn Sie sich diesen Artikel ansehen, wird der außerhalb der Funktion geschriebene Code basierend darauf ausgeführt, wenn "Datenbank" importiert wird. ..
Mit anderen Worten, die import database
von main.py
stellt einmal eine Verbindung zu SQL her, aber dieget_data ()
Funktion von database.py
wird nicht ausgeführt, da sie nur definiert ist, und die endgültigeVerbindung Der Fluss ist, dass die Verbindung mit .close ()
geschlossen wird.
Als ich danach die Funktion mit database.get_data ()
in main.py
aufrief, wurde die Verbindung bereits getrennt, sodass die Abfrage natürlich nicht ausgeführt werden konnte und ein Fehler auftrat.
Selbst wenn Sie nur "database.py" ausführen, ist es verständlich, dass kein Fehler auftritt, da die Verbindung nur getrennt wird, ohne dass nach der Verbindung etwas unternommen wird.
Also habe ich den Code wie folgt geändert und versucht, die Verbindung durch Aufrufen der Funktion zu trennen, und konnte ohne Fehler eine Verbindung herstellen.
main.py
#Modulimport
#Programm für Datenbankoperationen importieren
import database
#Hauptverarbeitung
#Funktionsaufruf in Datenbank
database.get_data()
#hinzufügen
database.close_db()
database.py
import mysql.connector
#Legen Sie das Verbindungsziel fest und stellen Sie eine Verbindung her
def get_data():
#Abfrage ausführen
#Fix
def close_db()
connection.commit()
connection.close()
Recommended Posts