Mysql
 sql >> Database >  >> RDS >> Mysql

Python perde la connessione al database MySQL dopo circa un giorno

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.