Eu tenho isso funcionando agora. O uso de conexões em pool pareceu corrigir o problema para mim.
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())
Eu chamo
connection()
antes de cada função de consulta e, em seguida, feche o cursor e a conexão antes de retornar. Parece funcionar. Ainda aberto a uma solução melhor embora. Editar
Desde então, encontrei uma solução melhor. (Eu ainda estava ocasionalmente tendo problemas com as conexões em pool). Na verdade, existe uma biblioteca dedicada ao Flask para lidar com conexões mysql, que é quase uma substituição imediata.
Do bash:
pip install Flask-MySQL
Adicionar
MYSQL_DATABASE_HOST
, MYSQL_DATABASE_USER
, MYSQL_DATABASE_PASSWORD
, MYSQL_DATABASE_DB
para a configuração do Flask. Em seguida, no arquivo principal do Python que contém seu objeto Flask App:from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)
E para obter uma conexão:
mysql.get_db().cursor()
Todas as outras sintaxes são as mesmas e não tive problemas desde então. Já uso esta solução há muito tempo.