/ / sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Verbindung zum MySQL-Server während der Abfrage unterbrochen') - Python, Kolben, sqlalchemy, flask-sqlalchemy, ssh-tunnel

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, "Verlorene Verbindung zum MySQL Server während der Abfrage") - Python, Flasche, Sqlalchemy, Flasche-Sqlalchemy, Ssh-Tunnel

Ich arbeite mit Python, Flask und SQLAlchemy. Ich habe beim Erstellen meiner Anwendung eine lokale Datenbank verwendet, und der folgende Code funktioniert einwandfrei:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config[
"SQLALCHEMY_DATABASE_URI"] = 
"mysql+pymysql://<username>:<password>@localhost/<DBName>"

db = SQLAlchemy(app)

Jetzt versuche ich, diesen Code zu erhalten, um eine Verbindung zu einer entfernten Datenbank mithilfe des Python-Pakets sshtunnel herzustellen. Dieser Code sieht folgendermaßen aus:

from flask import Flask
from sshtunnel import SSHTunnelForwarder
from flask_sqlalchemy import SQLAlchemy

forwarding_server = SSHTunnelForwarder(
"1.2.3.4", #my host IP address
ssh_username="user",
ssh_password="password",
remote_bind_address=("127.0.0.1", 8080)
)

forwarding_server.start()
local_port = str(forwarding_server.local_bind_port)
app = Flask(__name__)
app.config[
"SQLALCHEMY_DATABASE_URI"] = 
"mysql+pymysql://<username>:<password>@127.0.0.1:" + local_port + "/<DBName>"

db = SQLAlchemy(app)

Es sieht so aus, als würde es eine Verbindung herstellen, aber unmittelbar nach dem Start meiner Flaschenanwendung erhalte ich folgende Fehlermeldung:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, "Lost connection to MySQL server during query")

Jede Einsicht in dieses Problem wäre hilfreich. Danke im Voraus!

Antworten:

3 für die Antwort № 1

Sie können einstellen SQLALCHEMY_POOL_RECYCLE auf einen Wert kleiner als SQLALCHEMY_POOL_TIMEOUT in der Konfiguration von Flask-SQLAlchemy. Überprüf den Zeitüberschreitungen Teil der Dokumentation.