Teraz to działa. Korzystanie z połączonych połączeń wydawało mi się rozwiązać problem.
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())
Dzwonię do connection()
przed każdą funkcją zapytania, a następnie zamknij kursor i połączenie przed powrotem. Wydaje się działać. Nadal jednak otwarty na lepsze rozwiązanie.
Edytuj
Od tego czasu znalazłem lepsze rozwiązanie. (Nadal od czasu do czasu napotykałem problemy z połączeniami w puli). W rzeczywistości istnieje dedykowana biblioteka dla Flask do obsługi połączeń mysql, która jest prawie zamiennikiem.
Z bash:pip install Flask-MySQL
Dodaj MYSQL_DATABASE_HOST
, MYSQL_DATABASE_USER
, MYSQL_DATABASE_PASSWORD
, MYSQL_DATABASE_DB
do twojej konfiguracji Flask. Następnie w głównym pliku Pythona zawierającym obiekt Flask App:
from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)
Aby uzyskać połączenie:mysql.get_db().cursor()
Cała inna składnia jest taka sama i od tego czasu nie miałem żadnych problemów. Korzystam z tego rozwiązania od dłuższego czasu.