【问题标题】:Flask SQLAlchemy initial database connection extremely slowFlask SQLAlchemy 初始数据库连接极慢
【发布时间】:2020-06-12 16:13:00
【问题描述】:

当我使用 FlaskSQLAlchemy 建立初始数据库连接时,速度非常慢,有时需要一分钟或更长时间才能成功连接并执行查询。初始连接后的任何后续数据库调用都很快。据我了解,这与“延迟加载”有关。我怎样才能“强制”这个初始连接更早发生,或者完全加快连接速度?

我将 MS SQL Server 用于我的数据库,并将 pyodbc 用于我的 DB API。该应用程序部署在 Windows IIS 服务器上,尽管即使在本地连接时也会出现此问题 - 部署在 IIS 上时会加剧。

【问题讨论】:

    标签: python sql-server flask iis sqlalchemy


    【解决方案1】:

    使用最新版本的 PYODBC 驱动程序。首先安装python包。

    pip install pyodbc
    

    如果您使用以下代码,那么您肯定会从 MSSQL 数据库中获得快速响应。

    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
    

    确保您的 ODBC 驱动程序在您的系统中是准确的。如果您想了解有关 ODBC 驱动程序的知识,请在 cmd 命令中运行以下查询。

    import pyodbc
    pyodbc.drivers()
    

    然后将以下代码放入您的 init.py 文件中

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

    以上内容将提供您的 ORM(对象关系映射器),它将为您提供一种将对象参数映射到底层 RDBMS 表结构的技术。 ORM API 提供了执行 CRUD 操作的方法,而无需编写原始 SQL 语句。

    【讨论】:

    • 我目前的连接方式与此类似,但我的 SQLALCHEMY_DATABASE_URI 看起来更像这样 mssql+pyodbc://user:pass@server:1433/DatabaseName?driver=SQL+Server 这与使用 "mssql+pyodbc:///?odbc_connect=%s" % params 有什么区别?
    • 我相信,mssql+pyodbc:///?odbc_connect=%s" % params 这行代码构建了格式化的连接字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2014-10-26
    • 2018-02-09
    • 2017-07-07
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多