Tengo que trabajar ahora. El uso de conexiones agrupadas pareció solucionar el problema para mí.
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())
Llamo a connection()
antes de cada función de consulta y luego cierre el cursor y la conexión antes de regresar. Parece funcionar. Sin embargo, todavía estoy abierto a una mejor solución.
Editar
Desde entonces he encontrado una solución mejor. (Todavía ocasionalmente tenía problemas con las conexiones agrupadas). En realidad, hay una biblioteca dedicada para que Flask maneje las conexiones mysql, que es casi un reemplazo directo.
Desde bash:pip install Flask-MySQL
Añadir MYSQL_DATABASE_HOST
, MYSQL_DATABASE_USER
, MYSQL_DATABASE_PASSWORD
, MYSQL_DATABASE_DB
a su configuración de Flask. Luego, en el archivo principal de Python que contiene su objeto Flask App:
from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)
Y para obtener una conexión:mysql.get_db().cursor()
El resto de la sintaxis es la misma y no he tenido ningún problema desde entonces. He estado usando esta solución durante mucho tiempo.