Flask SQLAlchemy начальное соединение с базой данных очень медленное - PullRequest
0 голосов
/ 28 февраля 2020

Когда я устанавливаю исходное соединение с базой данных с помощью FlaskSQLAlchemy, это происходит очень медленно, иногда для успешной установки соединения и выполнения запроса требуется не более минуты. Любые последующие вызовы базы данных после начального соединения выполняются быстро. Насколько я понимаю, это как-то связано с «ленивой загрузкой». Как я могу «принудительно» установить это первоначальное соединение раньше или ускорить его вообще?

Я использую сервер MS SQL для своей базы данных и pyodb c для моего API БД. Приложение развернуто на Windows сервере IIS, хотя эта проблема возникает даже при локальном подключении - оно усугубляется при развертывании в IIS.

1 Ответ

0 голосов
/ 28 февраля 2020

Используйте последнюю версию драйвера PYODB C. Сначала установите python пакет.

pip install pyodbc

Если вы используете следующий код, то вы наверняка получите быстрый ответ из базы данных MS SQL.

import urllib
params = urllib.parse.quote_plus(
    'DRIVER={ODBC Driver 17 for SQL Server};SERVER=server-name;DATABASE=database-name;UID=sa;PWD=****;Trusted_Connection=yes;'
)

class Config:
    DEBUG = True
    SECRET_KEY = "E9738F40-4210ACAD94B"
    SQLALCHEMY_DATABASE_URI = "mssql+pyodbc:///?odbc_connect=%s" % params

Убедитесь, что ваш драйвер ODB C точен в ваша система. Если вы хотите получить сведения о драйвере ODB C, выполните следующий запрос в команде cmd.

import pyodbc
pyodbc.drivers()

Затем вставьте следующий код в файл init .py

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(Config)

Выше всего будет предоставлен ваш ORM (Object Relation Mapper), который даст вам технику сопоставления параметров объекта с базовой структурой таблицы RDBMS. API ORM предоставляет методы для выполнения операций CRUD без необходимости писать необработанные операторы SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...