将Django与MSSQL服务器连接

时间:2017-04-15 19:01:38

标签: python sql-server django django-mssql

我正在尝试将我的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

这是我的requirements.txt

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以使用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库作为驱动程序,那么你的驱动程序将是'驱动程序':'免费TDS' 这里13是默认版本。如果您安装的版本不同,则使用该版本号而不是13

答案 2 :(得分:0)

以下是官方django documentation(目前为django 3.1) 应该使用django-mssql-backend Django-MSSQL后端 django数据库适配器是 django-pyodbc-azure 的一个分支,

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

截止2020-11年,其他解决方案django-pyodbc-azuredjango-sqlserverdjango-mssql似乎已经过时。

答案 3 :(得分:0)

请检查此 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",
                    },
    },
}