【问题标题】:Connecting Django with MSSQL server将 Django 与 MSSQL 服务器连接起来
【发布时间】:2017-09-11 19:24:32
【问题描述】:

我正在尝试将我的 Django 应用程序连接到 SQL Server 2016。我尝试使用 django-pyodbc,但它不支持 Django 1.11。相反,我安装了 django-mssql 1.8。当我尝试运行应用程序时出现此错误。

TypeError was unhandled by user code
Message: 'NoneType' object is not callable

在manage.py中execute_from_command_line(sys.argv)

这是来自 settings.py 的我的数据库

DATABASES = {
'default': {
    'ENGINE': 'sqlserver_ado',
    'NAME': 'TEST2',
    'HOST': 'PCNAME\SQLEXPRESS',
    'USER': '',
    'PASSWORD': '',
    'OPTIONS' : {
     'provider': 'SQLOLEDB',
     'use_mars': True,
     },
}
}

我已经尝试了默认和 SQLOLEDB 提供程序,但总是得到相同的错误。我也尝试过设置和不设置用户名和密码,但错误仍然相同。我可以很好地连接到本地 MySQL 数据库。

我正在运行 Windows 10、Visual Studio 2015、SQL Server Express 2016

编辑:

这是pip freeze的输出

appdirs==1.4.3
Django==1.11
django-mssql==1.8
mysqlclient==1.3.10
packaging==16.8
pyodbc==4.0.16
pyparsing==2.2.0
pytz==2017.2
six==1.10.0

这是我的要求.txt

django==1.11
mysqlclient==1.3.10
django-mssql==1.8

【问题讨论】:

  • 你是否通过pip安装了mssql?
  • 是的,我通过 pip 安装了 django-mssql 并添加到了 requirements.txt

标签: python sql-server django django-mssql


【解决方案1】:

请检查此link。首先你需要安装 mssql-django 包和数据库配置应该是这样的

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "Todo",
        "USER": "",
        "PASSWORD": "",
        "HOST": "127.0.0.1",
        "PORT": "1433",
        "OPTIONS": {"driver": "ODBC Driver 17 for SQL Server",
                    },
    },
}

【讨论】:

    【解决方案2】:

    关注官方django documentation(目前为django 3.1) 应该使用django-mssql-backendDjango-MSSQL-backend django 数据库适配器是 django-pyodbc-azure 的一个分支,它:

    • 支持 Django 2.2、3.0
    • 支持 Microsoft SQL Server 2008/2008R2、2012、2014、2016、2017、2019
    • 与适用于 SQL Server、SQL Server Native Client 和 FreeTDS ODBC 驱动程序的 Micosoft ODBC 驱动程序兼容

    截至 2020-11 年的其他解决方案 django-pyodbc-azuredjango-sqlserverdjango-mssql 看起来已经过时了。

    【讨论】:

      【解决方案3】:

      您可以使用 django-pyodbc-azure,因为它支持当前版本的 django 2.0。 安装后,您需要在设置文件中进行编辑,如下所示:

      DATABASES = {
          'default': {
              'ENGINE': 'sql_server.pyodbc',
              'NAME': DB_NAME,
              'USER': USER,
              'PASSWORD': PASSWORD,
              'HOST': HOST,
              'PORT': PORT,
              'OPTIONS': {
                  'driver': 'ODBC Driver 13 for SQL Server',
                  'unicode_results': True,
      
              },
          }
      }
      

      如果您安装 TDS 库作为驱动程序,那么您的驱动程序将是 'driver':'Free TDS' 这里 13 是默认版本。如果您安装的版本与此不同,请使用该版本号而不是 13

      【讨论】:

        【解决方案4】:

        django-mssql documentation 中所述,最新版本仅支持 Django 1.8,因此不适用于 Django 1.11。

        您必须等到软件包支持更新版本的 django 才能升级。这就是将 Django 与不支持的数据库后端一起使用时的问题,您依赖于第三方包维护,而这似乎无法与 Django 保持同步。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多