python - SQLAlchemy - SQL Server 连接
问题描述
我已经将 postgresql 与 SQLAlchemy 一起使用,但我试图获取在 SQL Server 上运行的 Azure 中的数据库。我无法连接,也无法真正弄清楚原因。我进行了相当多的搜索,发现大多数文章都指向我使用 ORM,create_engine
但我似乎无法让它与使用 ORM 一起工作。这是我当前的代码:
例外
sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:sqlserver
from flask import Flask
from models import db, People
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlserver://<connectionString>'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
@app.route('/')
def hello_world():
#Exception here
people = People.query.filter_by(birthYear=12).all()
return 'Hello World!'
if __name__ == '__main__':
app.run()
Azure 为我提供了 4 个不同的连接字符串:
- 网络
- JDBC
- ODBC
- PHP(不是我的选择,因为我没有使用 PHP)
有什么方法可以让 SQLAlchemy 与 SQL Server 一起工作?
解决方案
SQLAlchemy 只是一个高级 ORM 库,与 db 的底层通信由 dialect/DBAPI 库完成。
假设您打算使用pymssql,您需要先安装pymssql
,并修改连接字符串
mssql+pymssql://<username>:<password>@<host>:<port>/<database_name>/?charset=utf8
此驱动程序的现代版本与来自 Linux 的 SQL Server 和 FreeTDS 配合得非常好,强烈推荐使用。
推荐阅读
- javascript - 如何使用 if 语句关闭悬停效果
- laravel - Docker 上的 Laravel 的 MySQL 访问被拒绝
- python - Python: sorted insert into list
- html - 是否可以使用 CSS flexbox 在垂直和水平两个轴上收缩/拉伸内容?
- xml - 将 XML 文件复制到雪花表时捕获 XML 文件名
- sql - 'ORA-01843: not a valid month' 但格式正确?
- php - 我提出的每个请求都得到不同的 php 会话 ID。角前端
- r - 为什么 ggplot2 中的 ylim() 函数被忽略?
- sql-server - 如何从 SQL Server 中的 select 语句中设置变量
- javascript - 为什么导航栏不固定到顶部?