使用django-mssql-1.6建立与MS SQL Server 2014的连接



我知道django-mssql-1.6/README状态:

SQL Server版本

支持的版本:

  • 2008
  • 2008年2
  • 2012年

但是,鉴于v.1.6是可用的最新版本,我想知道是否有人能够找到连接到MS SQL Server 2014的方法。我正在尝试,但收到错误消息:

django.db.utils.OperationalError:(com_error(-2147352567,'发生异常。',(0,u'ADODB.Connection',u'找不到提供程序。它可能没有正确安装。',u'C:\Windows\HELP\ADO270.CHM',1240655,-2146824582),无),u'打开连接时出错:数据源=127.0.0.1;初始目录=testdb;综合安全=SSPI;PROVIDER=sqlncli10;DataTypeCompatibility=80;MARS连接=真)

使用配置:

DATABASES = {
    'default': {
        'ENGINE': 'sqlserver_ado',
        'NAME': 'testdb'
    }
}

据我所见,您使用的是django-mssql和django的正确版本。我最近从1.6升级到1.7,不得不更改DB后端,因为django 1.7不再支持sql_server.pyodbc。我在更改为django-mssql(sqlserver_ado)时遇到了这个问题。问题是您使用了错误的提供程序。Django mssql使用SQLCLI10作为默认提供程序,这对我来说也不起作用。只要你使用SQLOLEDB提供程序,在你的DB配置中添加一个选项哈希,就像上面的答案中的那个,就会解决你的问题。这是我的配置:

    DATABASES = {
    'default': {
        'NAME': 'CVH_Dev',
        'ENGINE': 'sqlserver_ado',
        'HOST': '192.***.212.2**',
        'USER': 'USER',
        'PASSWORD': 'PWD',
        'OPTIONS': {
            'provider': 'SQLOLEDB',
            'use_legacy_date_fields': 'True'
        }
    }
}

使用SQLOLEDB提供程序选项,它就会工作。希望这能有所帮助。

也许太晚了,但是。。。如果您正在使用Django1.10并且不需要坚持使用django-mssql,那么您可以切换到Django-pyodbc azure包,该包支持开箱即用的MS SQL Server 2014和2016。

刚刚尝试过,它在这个环境中工作

  • Windows Server 2012 R2
  • Python 3.5.2
  • SQL Server 2016
  • Django 1.10

请确保您使用的是Django 1.6,并且Django-mssql是1.6版本。我注意到django-mssql1.6与最新的Django1.8不兼容。

以下是我的数据库配置设置,它对我有效-

  DATABASES = {
      'default': {
          'ENGINE': 'sqlserver_ado',
          'NAME': 'dbname',                      # Or path to database file       if using sqlite3.
          # The following settings are not used with sqlite3:
          'USER': 'db_user_id',
          'PASSWORD': 'db_password',
          'HOST': 'host_name_or_ip_addr',                      # Empty for       localhost through domain sockets or '127.0.0.1' for localhost through TCP.
          'PORT': '1433',                      # Set to empty string for       default.
          'OPTIONS': {
                'provider' : 'SQLOLEDB'             # or these other two dlls did not work for me SQLCLI10, SQLCLI11
          },
      },
  }

使用'SQLNCLI11'提供程序为我解决:

DATABASES = {
    'default': {
        'NAME': 'MyDatabase',
        'ENGINE': 'sqlserver_ado',
        'HOST': '.\SQLEXPRESS',
        'USER': '',
        'PASSWORD': '',
        'OPTIONS': {
            'provider': 'SQLNCLI11',
            'use_legacy_date_fields': 'True'
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新