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.