sql-server - 使用 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 但如果那不可能,我可以重写一些东西。任何帮助表示赞赏。
解决方案
当您部署到生产环境时,Windows 身份验证将成为一个问题。我建议创建一个 SQL 用户来连接到您的数据库。
试试这个连接字符串:
mssql+pyodbc://<UID>:<PWD>@<SERVER>/<DATABASE>?driver=ODBC+Driver+17+for+SQL+Server;Trusted_Connection=no
还要确保你已经安装了pyodbc
msft 文档
pip install pyodbc
推荐阅读
- python - 计算布局中检查的 QCheckBox 数量 - PyQt5
- php - PHP - 将ΓÇô 转换为撇号
- c# - 为什么 Picasa 网络相册数据 API 返回“Content-Type text/xml 不是有效的输入类型”。使用 C# 发布照片时
- javascript - CoffeeScript:HTTPS 发布到 API,处理响应
- c# - 在 C# 中,在主程序中没有任何控件的情况下捕获屏幕选择
- ios - 无法在模态控制器的视图前添加视图
- javascript - ES6 For each/map 学生成绩
- c - 在 BPF 程序上传时解密“无效的内存访问 map_ptr”
- javascript - 结合多个对象在Node中创建JSON对象
- image - 反应,将图像从 this.state 传递给组件