Teď mi to funguje. Zdálo se, že problém vyřeší použití sdružených připojení.
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())
Volám connection()
před každou funkcí dotazu a před návratem zavřete kurzor a připojení. Zdá se, že to funguje. Stále však otevřeno lepšímu řešení.
Upravit
Od té doby jsem našel lepší řešení. (Stále jsem občas narážel na problémy se sdruženými připojeními). Ve skutečnosti existuje vyhrazená knihovna pro Flask, která zvládá připojení mysql, což je téměř náhrada typu drop-in.
Z bash:pip install Flask-MySQL
Přidejte MYSQL_DATABASE_HOST
, MYSQL_DATABASE_USER
, MYSQL_DATABASE_PASSWORD
, MYSQL_DATABASE_DB
do vaší konfigurace Flask. Poté v hlavním souboru Python obsahujícím váš objekt Flask App:
from flaskext.mysql import MySQL
mysql = MySQL()
mysql.init_app(app)
A pro získání připojení:mysql.get_db().cursor()
Všechna ostatní syntaxe je stejná a od té doby jsem neměl žádné problémy. Toto řešení používám již dlouhou dobu.