sql >> Databasteknik >  >> RDS >> Mysql

Python tappar anslutningen till MySQL-databasen efter ungefär ett dygn

Jag har det att fungera nu. Att använda poolade anslutningar verkade lösa problemet för mig.

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())

Jag anropar connection() före varje frågefunktion och stäng sedan markören och anslutningen innan du återvänder. Verkar fungera. Ändå öppen för en bättre lösning.

Redigera

Jag har sedan dess hittat en bättre lösning. (Jag stötte fortfarande på problem med de sammanslagna anslutningarna ibland). Det finns faktiskt ett dedikerat bibliotek för Flask för att hantera mysql-anslutningar, vilket nästan är en drop-in-ersättning.

Från bash:pip install Flask-MySQL

Lägg till MYSQL_DATABASE_HOST , MYSQL_DATABASE_USER , MYSQL_DATABASE_PASSWORD , MYSQL_DATABASE_DB till din Flask-konfiguration. Sedan i Python-huvudfilen som innehåller ditt Flask-appobjekt:

from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)

Och för att få en anslutning:mysql.get_db().cursor()

All annan syntax är densamma, och jag har inte haft några problem sedan dess. Har använt den här lösningen länge nu.




  1. Kul med meddelanden

  2. ignorerar mysql fulltext stoppord i frågan

  3. Hur statiska vs singleton-klasser fungerar (databaser)

  4. SQL Server:Är det möjligt att infoga i två tabeller samtidigt?