Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Python verliert nach etwa einem Tag die Verbindung zur MySQL-Datenbank

Ich habe es jetzt funktioniert. Die Verwendung gepoolter Verbindungen schien das Problem für mich zu beheben.

mysql.connector.connect(
    host='10.0.0.25',
    user='xxxxxxx', 
    passwd='xxxxxxx', 
    database='xxxxxxx',
    pool_name='batman',
    pool_size = 3
)

def connection():
    """Get a connection and a cursor from the pool"""
    db = mysql.connector.connect(pool_name = 'batman')
    return (db, db.cursor())

Ich rufe connection() auf vor jeder Abfragefunktion und schließen Sie dann den Cursor und die Verbindung, bevor Sie zurückkehren. Scheint zu funktionieren. Immer noch offen für eine bessere Lösung.

Bearbeiten

Inzwischen habe ich eine bessere Lösung gefunden. (Ich hatte immer noch gelegentlich Probleme mit den gepoolten Verbindungen). Es gibt tatsächlich eine dedizierte Bibliothek für Flask, um MySQL-Verbindungen zu handhaben, was fast ein Drop-in-Ersatz ist.

Von bash:pip install Flask-MySQL

Fügen Sie MYSQL_DATABASE_HOST hinzu , MYSQL_DATABASE_USER , MYSQL_DATABASE_PASSWORD , MYSQL_DATABASE_DB zu Ihrer Flask-Konfiguration. Dann in der Python-Hauptdatei, die Ihr Flask-App-Objekt enthält:

from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)

Und um eine Verbindung herzustellen:mysql.get_db().cursor()

Alle anderen Syntax ist die gleiche, und ich hatte seitdem keine Probleme mehr. Benutze diese Lösung schon seit langem.