在生产中使用Django与Sql Server

52 投票
7 回答
49429 浏览
提问于 2025-04-15 11:28

有没有人最近在用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

更多信息: https://github.com/microsoft/mssql-django

撰写回答