【问题标题】:Using sql server on django在 django 上使用 sql server
【发布时间】:2015-05-05 11:32:39
【问题描述】:

我在我的 django 环境中得到了关注

Django==1.8.1
django-mssql==1.6.2
django-pyodbc==0.2.8
pyodbc==3.0.10
pywin32==219 
sql-server.pyodbc==1.0

以及我的 settings.py 中的以下内容

DATABASES = {
  'default': {
    'NAME': 'db_name',
    'ENGINE': 'sqlserver_ado',
    'HOST': 'host_name\\SQLEXPRESS',
    'USER': 'user_name',
    'PASSWORD': 'password',
  }
}

但是当我尝试迁移它时,我遇到了以下错误。我错过了什么吗?

django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'base', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
Error was: cannot import name 'BaseDatabaseWrapper'

【问题讨论】:

  • this 答案。
  • 我使用的是 sql server 2012,但他们提到的是 2005/2008。虽然我试过了。我犯了同样的错误。我在 /site-packages/ 中有完整的 sqlserver_ado 文件夹
  • 密码 fwiw 后面好像多了一个逗号

标签: python django


【解决方案1】:

在 Django 1.8 版中尝试这些设置。

DATABASES = {
'default': {
    'ENGINE': 'sqlserver_ado',
    'NAME': '',
    'USER': '',
    'PASSWORD': '',
    'HOST': '',
    'PORT': '1433',
     'OPTIONS': {
        'provider': 'SQLOLEDB', #SQLNCLI11 , SQLOLEDB
        'use_legacy_date_fields': 'True',
        #'extra_params' : 'DataTypeCompatibility=80;MARS Connection=True',
        #'connect_timeout': 0
        }
}

}

【讨论】:

    【解决方案2】:

    尝试改用django-pyodbc

    settings.py 中,将ENGINE 设置替换为:

    'ENGINE': 'django_pyodbc',
    

    【讨论】:

    • 为我工作。谢谢。
    【解决方案3】:

    我一直在使用 django 1.8,并通过降级到 django 1.6 解决了这个问题。 这些是降级后安装在我的 virtualenv 中的库,当我开始工作时。:

    (env)$ pip list
    argparse (1.2.1)                                         
    Django (1.6)                                             
    django-pyodbc (0.2.8)                                    
    pip (1.5.4)                                              
    pyodbc (3.0.10)                                          
    setuptools (2.2)                                         
    wsgiref (0.1.2)                                          
    

    【讨论】:

      【解决方案4】:

      你需要安装python包django-sqlserver。

      【讨论】:

      • 我安装了 django-sqlserver,还是不行。
      • 然后安装 django-mssql。
      【解决方案5】:

      对于 Django 1.11 版,我正在使用以下设置:

      DATABASES = {
         'default': {
             'NAME': 'DbName',
             'ENGINE': 'sql_server.pyodbc',
             'HOST': 'localhost',
             'PORT': '1433',
             'USER': 'DBUser',
             'PASSWORD': 'Db password',
             'OPTIONS': {
                          'driver': 'ODBC Driver 13 for SQL Server'
                        }
          }
      }
      

      【讨论】:

        【解决方案6】:

        在 django 文档中丢失搜索后,我认为 Google 中关于 Django 和 MSSQL Server 下面的大部分链接都是我的配置。

        我的python版本是

        Python 3.7.0(v3.7.0:1bf9cc5093,2018 年 6 月 27 日,04:59:51)[MSC v.1914 64 位 (AMD64)]

        需要的包是:

        django==1.11.16

        django-pyodbc-azure==2.1.0.0

        pyodbc=4.0.24

        pywin32==224

        以上所有包都是最新的 发帖。

        要下载 pywin32,请使用此链接(最新版本为 224)

        https://github.com/mhammond/pywin32/releases

        之后您需要下载 SQL SERVER 驱动程序,我目前在 Windows 10 上,所以我下载了最新的 2017 SQL SERVER DRIVER。

        https://www.microsoft.com/en-us/download/details.aspx?id=56567

        在 Django Settings.py 文件中,这是我的配置

        如果您没有在选项字段中提及您的驱动程序版本,这将 不工作所以要专心。

        DATABASES = {
            'default': {
                'NAME': 'abc', #this is your database name
                'ENGINE': 'sql_server.pyodbc',  #this is your Engine 
                'HOST': 'x.x.x.x',  #MSSQL SERVER ip
                'USER': 'user',  # username
                'PASSWORD': 'password', # password 
                'OPTIONS': {         # mention your Driver Version
                    'driver': 'ODBC Driver 17 for SQL Server' # Mine Driver version is 2017 so that i mentioned 17 , mention According to yourself 
                }
            }
        }
        

        【讨论】:

          【解决方案7】:

          如果你添加一个选项,比如:

          'OPTIONS': {
                              'driver': 'ODBC Driver 13 for SQL Server'
                            }
          

          你必须确保你已经为 SQL Server 安装了 OCBC Driver 13。 (这将在“管理工具”>“数据源 OCBC”中,当您单击“添加”按钮时,此驱动程序应在列表中,否则您必须安装)

          如果还是不行,试试安装:pip install django-pyodbc-azure

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-27
            • 1970-01-01
            • 2021-11-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多