使用Djangomssql1.6建立与MS SQL Server 2014的连接

2024-10-01 13:44:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道django-mssql-1.6/自述文件中指出:

SQL Server版本

支持的版本:

  • 2008年
  • 2008年2月
  • 2012年

但是,由于v1.6是最新版本,我想知道是否有人能够找到连接到mssqlserver2014的方法。我正在尝试,但收到错误消息:

django.db.utils.OperationalError:(com\u错误(-2147352567,“发生异常。”,(0,u'数据库控制找不到',u'提供程序。它可能没有正确安装。',u'C:\Windows\HELP\ADO270.CHM',1240655,-2146824582),None),u'打开连接时出错:DATA SOURCE=127.0.0.1;Initial Catalog=testdb;Integrated Security=SSPI;PROVIDER=sqlncli10;DataTypeCompatibility=80;MARS connection=True')

使用配置:

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

Tags: django方法版本com消息dbsqlserver
3条回答

也许太迟了,但是。。。如果您使用的是Django1.10,并且不需要坚持django-mssql,那么可以切换到{a1}包,该包支持现成的MS SQL Server 2014和2016。在

刚试过,在这种环境下,它很有效:

  • Windows Server 2012 R2版
  • Python 3.5.2版
  • SQL Server 2016
  • 迪亚戈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
          },
      },
  }

据我所知,您使用的是正确版本的django-mssql和django。我最近从1.6迁移到了1.7,因为django1.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提供程序选项,它将工作。 希望这有帮助。在

相关问题 更多 >