将Django与MSSQL Server连接



我正在尝试将我的Django应用程序连接到SQL Server2016。我已经尝试使用Django-pyodbc,但它不支持Django 1.11。相反,我安装了Django-MSSQL 1.8。当我尝试运行应用程序时,我会收到此错误。

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

execute_from_command_line(sys.argv) in manage.py。

这是我的数据库。

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

我已经尝试了默认值和SQLoledB提供商,但始终遇到相同的错误。我还尝试过有或没有用户和密码集,但错误仍然相同。我可以连接到本地的mysql db。

我正在运行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

这是我的要求:

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

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

您必须等到包装支持Django的较新版本才能升级。这是当将DJANGO与非支持数据库后端一起使用时的问题,您依赖第三方软件包维护,并且这似乎很难与Django保持最新状态。

使用 mssql-django ,我们可以将 django 连接到 mssql(sql server( Windows>strong>和 SQL Server身份验证。*我使用 SQL Server 2019 Express

带有 Windows Authentication ,要连接 django to MSSSQL 使用 mssql-django ,将下面的代码设置为'settings.py; 。下面的此代码是 django and mssql in in >同一Windows Computer(local -Host( and &quenne>&quent>必须是'MSSQL;; for 'host' Windows Computer Name(设备名称(。*将其空白用于'port',因为如果设置任何端口号,例如,例如。 2244&quot' 9877&quot''否>&quort&quot&quort; wes ; te >:

# "settings.py"
DATABASES = {
    'default':{
        'ENGINE':'mssql',                    # Must be "mssql"
        'NAME':'test',                       # DB name "test"
        'HOST':'DESKTOP-QVRCPTASQLEXPRESS', # <server><instance>
        'PORT':'',                           # Keep it blank
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

此外,'desktop-qvrcpta'可以用>&quort'可以使用空字符串" ports" " password" " port"> MSSQL 带有 Windows Authentication

# "settings.py"
DATABASES = {
    'default':{
        'ENGINE':'mssql',
        'NAME':'test',
        'USER':'',                     # Keep it blank
        'PASSWORD':'',                 # Keep it blank
        'HOST':'localhostSQLEXPRESS', # "localhost" is also possible
        # 'PORT':'',                   # Can be removed
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

使用 SQL Server Authentication ,以连接 django to MSSSQL 使用 MSSQL-DJANGO strong> Windows Authentication 如上图所示,>&quord and and 'password&quose&quods&quote&quote&quote&quote&quote&quots>'sett>&quort'setterings>&quort;。* Windows Authentication SQL Server Authentication 的代码之间的差异仅是&quot'user&quote'''strong>:

# "settings.py"
DATABASES = {
    'default':{
        'ENGINE':'mssql',  
        'NAME':'test',           
        'USER':'john',                       # Username "john"
        'PASSWORD':'johnpw',                 # Password "johnpw"
        'HOST':'DESKTOP-QVRCPTASQLEXPRESS',
        'PORT':'',                           
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

此外,与 Windows Authentication 的代码相同,&quot desktop-qvrcpta; '可以用&quort; localhost;'port; 可以如下所示,如下所示,以连接 django to mssql 带有 sql Server authentication P>

# "settings.py"
DATABASES = {
    'default':{
        'ENGINE':'mssql',
        'NAME':'test',
        'USER':'john',        
        'PASSWORD':'johnpw',
        'HOST':'localhostSQLEXPRESS', # "localhost" is also possible
        # 'PORT':'',                   # Can be removed   
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    }
}

接下来,安装最新的软件包mssql-django

pip install mssql-django

然后,进行迁移并迁移:

python manage.py makemigrations && python manage.py migrate

然后,创建超级用户:

python manage.py createsuperuser

现在,我们可以将 django 连接到 mssql Windows Authentication SQL Server Authentication ,然后创建的表格;数据库

官方Django文档之后(当前Django 3.1(应使用Django-MSSQL-BAKEND。 django-mssql-backend django数据库适配器是 django-pyodbc-azure 的叉子,哪个:

  • 支持Django 2.2,3.0
  • 支持Microsoft SQL Server 2008/2008R2,2014,2014,2016,2017,2017,2019
  • 与SQL Server,SQL Server本地客户端的Micosoft ODBC驱动程序兼容,而Freetds ODBC驱动程序

其他解决方案django-pyodbc-azure,django-sqlserver和django-mssql截至2020-11看起来很过时。

您可以使用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

请检查此链接。首先,您需要安装 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",
                    },
    },
}

相关内容

  • 没有找到相关文章

最新更新