使用Windows身份验证连接到Microsoft SQL Server时出现问题

时间:2020-09-08 21:49:05

标签: sql-server flask flask-sqlalchemy

我正在建立一个烧瓶项目,供公司内部使用。我首先使用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,但是如果不可能,我可以重写一些东西。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

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

尝试以下连接字符串:

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

还要确保您已安装pyodbc msft docs

pip install pyodbc