在生产中使用Django与Sql Server
有没有人最近在用SQL Server数据库部署Django应用方面有过经验?我们公司对SQL Server非常依赖,如果没有一个足够成熟的后端支持Django,他们就不会支持这个框架。
我知道有两个非官方支持的后端,分别是mssql.django-pyodbc和django-mssql。不过这两个项目似乎只有一个人在维护,这让我有点担心,虽然他们的更新还算规律。
有没有其他对SQL Server支持得比较好的后端?我提到的这两个后端在生产环境中“够用”吗?你们有什么经验可以分享吗?
7 个回答
19
最近
- django-mssql:在运行
./manage.py migrate
时出现了“NoneType not callable”的错误 - avidal/django-pyodbc:这个项目没有维护了。被以下项目替代:
- django-pyodbc:不支持 Python 3
- django-pyodbc-azure:到目前为止对我来说是有效的
- 编辑:看起来这个项目也没有维护了。我在 issue 125 上询问了状态
- 编辑:得到了维护者的回复。很快会与 Django 2.0 兼容
- 编辑:维护者发布了适用于 Django 2.0 的版本 2.0
- 编辑:维护者发布了适用于 Django 2.1 的版本 2.1
编辑:以下是软件包的版本信息
Django==1.11.6
django-mssql==1.8
pyodbc==4.0.19
django-pyodbc==1.1.1
django-pyodbc-azure==1.11.0.0
22
正如之前提到的,django-pyodbc 是一个不错的选择。PyODBC 可能是目前最成熟的 Python SQL Server 库。
你可能会遇到的问题是,pyodbc 对存储过程的支持不是很好(你可以调用它们,但无法获取结果)。你可以使用 pymssql 来调用存储过程,但如果可以的话,我建议尽量避免使用,因为它不支持标准的数据库接口,可能会有变化。如果你确实需要这样做,最好的办法是直接使用 adodbapi(它包含在 python win32 包中,你可能最终还是会安装这个包)。
3
使用下面这个官方的微软包来把SQL服务器连接到Django。
pip install mssql-django
设置
DATABASES = {
'default': {
'ENGINE': 'mssql',
'NAME': 'mydb',
'USER': 'user@myserver',
'PASSWORD': 'password',
'HOST': 'myserver.database.windows.net',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
},
}
# set this to False if you want to turn off pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False