sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, «Потеря соединения с сервером MySQL во время запроса») - PullRequest
0 голосов
/ 25 апреля 2018

Я работаю с Python, Flask и SQLAlchemy.При создании приложения я использовал локальную базу данных, и она работала нормально со следующим кодом:

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)

Теперь я пытаюсь получить этот код для подключения к удаленной базе данных с помощьюпакет Python sshtunnel.Вот как выглядит этот код:

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)

Он выглядит так, как будто он подключается, но сразу после запуска приложения фляги я получаю следующую ошибку:

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

Любойпонимание этой проблемы было бы полезно.Заранее спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете установить SQLALCHEMY_POOL_RECYCLE на значение меньше SQLALCHEMY_POOL_TIMEOUT в конфигурации Flask-SQLAlchemy. Проверьте таймауты часть документации.

...