Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Python perde conexão com banco de dados MySQL após cerca de um dia


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.