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