首页 > 解决方案 > 使用 Windows 身份验证连接到 Microsoft SQL Server 时遇到问题

问题描述

我正在为我的公司构建一个烧瓶项目供内部使用。我首先使用 flask 和 postgre 并使用 sqlalchemy 并使用如下模型格式设置该连接:

app = Flask(__name__)

app.config.from_object('config')

db = SQLAlchemy(app)

效果很好。现在出于安全原因,我们正在切换到在 IIS 服务器上使用带有窗口身份验证的 Microsoft SQL Server,但我在连接时遇到了很多麻烦。我将数据库 URI 更改为

SQLALCHEMY_DATABASE_URI = "mssql+pyodbc://server/database"

我检查了 SQL Sever 配置,我很确定这是正确的。但是我得到了错误

psycopg2.OperationalError: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

我已经研究过这个问题并使用了 pool_pre_ping 解决方案,但我得到了同样的错误(如下所示)

SQLALCHEMY_ENGINE_OPTIONS = {"pool_pre_ping": True} 

我已经看到很多关于使用 sqlalchemy.engine 的东西的答案,但如果可能的话,我希望使用我已经写出的所有 db.models 但如果那不可能,我可以重写一些东西。任何帮助表示赞赏。

标签: sql-serverflaskflask-sqlalchemy

解决方案


当您部署到生产环境时,Windows 身份验证将成为一个问题。我建议创建一个 SQL 用户来连接到您的数据库。

试试这个连接字符串:

mssql+pyodbc://<UID>:<PWD>@<SERVER>/<DATABASE>?driver=ODBC+Driver+17+for+SQL+Server;Trusted_Connection=no

还要确保你已经安装了pyodbc msft 文档

pip install pyodbc 

推荐阅读