L'ho fatto funzionare ora. L'utilizzo di connessioni in pool sembrava aver risolto il problema.
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())
Chiamo connection()
prima di ogni funzione di query e quindi chiudere il cursore e la connessione prima di tornare. Sembra funzionare. Comunque ancora aperto a una soluzione migliore.
Modifica
Da allora ho trovato una soluzione migliore. (Di tanto in tanto stavo ancora riscontrando problemi con le connessioni in pool). In realtà esiste una libreria dedicata a Flask per gestire le connessioni MySQL, che è quasi un sostituto drop-in.
Da bash:pip install Flask-MySQL
Aggiungi MYSQL_DATABASE_HOST
, MYSQL_DATABASE_USER
, MYSQL_DATABASE_PASSWORD
, MYSQL_DATABASE_DB
alla tua configurazione Flask. Quindi nel file Python principale contenente il tuo oggetto Flask App:
from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)
E per ottenere una connessione:mysql.get_db().cursor()
Tutte le altre sintassi sono le stesse e da allora non ho avuto problemi. Uso questa soluzione da molto tempo ormai.