在Django上使用SQL Server

3
我在我的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'

请查看这个答案。 - doru
我正在使用SQL Server 2012,但他们提到的是2005/2008。尽管我尝试了它,但我仍然遇到了相同的错误。我在/site-packages/中有完整的sqlserver_ado文件夹。 - Kiran Kumar
看起来你在密码后面多了一个逗号,供参考。 - Hack-R
7个回答

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
        }
}

}


1

我之前一直在使用django 1.8,后来通过将版本降级至django 1.6来解决问题。以下是我在降级后在虚拟环境中安装的库列表,也是我让它正常运行时的库列表:

(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)                                          

1

你需要安装Python包django-sqlserver。


1
我安装了django-sqlserver,但它仍然无法工作。 - Kiran Kumar
然后安装django-mssql。 - HiroshiFuu

1

尝试使用 django-pyodbc 代替。

settings.py 中,将 ENGINE 设置替换为以下内容:

'ENGINE': 'django_pyodbc',

对我有用。谢谢。 - Felix Ongati

0

对于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'
                  }
    }
}

0

在Django文档和谷歌搜索Django与MSSQL Server相关的大量链接后,以下是我的配置。

我的Python版本是

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (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驱动程序。

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 
        }
    }
}

0

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

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

您需要确保已经安装了适用于 SQL Server 的 OCBC Driver 13。(此项应该在“管理工具”>“数据源 OCBC”中,当您单击“添加”按钮时,此驱动程序应该在列表中,否则您需要进行安装)

如果仍然无法正常工作,请尝试安装:pip install django-pyodbc-azure


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接