4

我在 Win Server 2008 R2 上设置 django-mssql 时遇到了一些问题。我已经安装了所有东西,但是,django-mssql 的 wiki 说要设置类似于以下内容的设置文件:

DATABASES = {
'default': {
    'NAME': 'my_database',
    'ENGINE': 'sqlserver_ado',
    'HOST': 'dbserver\\ss2008',
    'USER': '',
    'PASSWORD': '',
    'OPTIONS' : {
        'provider': 'SQLOLEDB',
        'use_mars': True,
    },
   }
}

当我从我的站点目录运行时:

 python manage.py syncdb

我收到一条错误消息,指出它不是可用的数据库后端。当我安装 django-mssql 时,它似乎在这里安装了后端\site-packages\django_mssql-1.0.1-py2.7.egg\sqlserver_ado这需要复制到site-packages\django\db\backends吗?

如果我将设置设置为:

DATABASES = {
'default': {
    'NAME': 'my_database',
    'ENGINE': 'django_mssql-1.0.1-py2.7.egg.sqlserver_ado',
    'HOST': 'dbserver\\ss2008',
    'USER': '',
    'PASSWORD': '',
    'OPTIONS' : {
        'provider': 'SQLOLEDB',
        'use_mars': True,
    },
   }
}

设置此后端时我是否遗漏了什么?这是我第一次使用 django,但我没有在文档中看到任何设置不同后端的内容,并且 django-mssql wiki 或问题似乎也没有任何内容。

另外,如果在某个地方有其他文档可以提供帮助,请告诉我。

编辑:django 应用程序正在 Ubuntu 服务器上运行。

4

6 回答 6

6

Dustin 关于确保从命令 shell 中“导入 sqlserver_ado”的评论让我在安装了 pywin32 的 Django 1.8.1、Python 3.5 Win32 系统上走上了正确的道路。

SPOILER ALERT这只会让我的 Django 实例正常运行。我还没有测试 ADO 连接。

我收到的第一条错误消息是:

No module named 'django.db.backends.util'

我发现有一个名为:django.db.backends.utils的文件,所以我将其复制并重命名为django.db.backends.util(不带“s”),然后错误消息消失了!

所以希望这不会太有害,我继续排除故障。

我收到的下一条错误消息是:

  File "C:\Program Files (x86)\Python35-32\lib\site-packages\sqlserver_ado\base.py", line 7, in <module>
from django.db.backends import BaseDatabaseWrapper, BaseDatabaseFeatures, BaseDatabaseValidation, BaseDatabaseClient 
ImportError: cannot import name 'BaseDatabaseWrapper'

我将 base.py 中的第 7 行更改为现在说:

#from django.db.backends import BaseDatabaseWrapper, BaseDatabaseFeatures, BaseDatabaseValidation, BaseDatabaseClient
from django.db.backends.base.base import BaseDatabaseWrapper
from django.db.backends.base.features import BaseDatabaseFeatures
from django.db.backends.base.validation import BaseDatabaseValidation
from django.db.backends.base.client import BaseDatabaseClient

是的,这是注释掉坏行并添加四个单独的行。然后我得到了这个错误:

  File "C:\Program Files (x86)\Python35-32\lib\site-packages\sqlserver_ado\base.py", line 18, in <module>
from .introspection import DatabaseIntrospection

文件“C:\Program Files (x86)\Python35-32\lib\site-packages\sqlserver_ado\introspection.py”,第 3 行,在 from django.db.backends import BaseDatabaseIntrospection ImportError: cannot import name 'BaseDatabaseIntrospection'

所以我将第 3 行更改为现在阅读:

from django.db.backends.base.introspection import BaseDatabaseIntrospection

等等creation.py:

from django.db.backends.base.creation import BaseDatabaseCreation

对于操作.py:

from django.db.backends.base.operations import BaseDatabaseOperations

对于 schema.py:

from django.utils.log import getLogger

希望这可以帮助某人。希望 ADO 模块真正连接到某些东西。

-肖恩

于 2016-05-02T07:56:14.313 回答
5

您需要确保可以从 python shell 中导入“sqlserver_ado”。

将文件夹 sqlserver_ado 放在 PATH 的某个位置,我把我的放在 \site-packages\

看看README.txt

引擎确实希望设置为“sqlserver_ado”,类似于设置示例页面上的设置方式。

于 2012-04-13T00:49:56.077 回答
3

截至 2019 年:

我根本无法让 Django MSSQL 工作。

我切换到django-pyodbc-azure并且效果很好。

安装:

pip install django-pyodbc-azure

设置:

'ENGINE': 'sql_server.pyodbc'
于 2019-01-18T22:08:01.877 回答
1

您需要安装依赖项 PyWin32。您可以通过 pip 安装或从 python 二进制文件页面http://www.lfd.uci.edu/~gohlke/pythonlibs/下载

于 2014-03-03T15:24:29.267 回答
0

我试图让 django_pyodbc 工作,但不能。我收到了这个错误:

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

我被定向到这篇文章作为解决方案,所以我也会在这里发布我的答案。我降级到 django 1.6 而不是 1.8,现在 django_pyodbc 用作数据库后端。

于 2015-05-12T03:09:29.337 回答
0

根据https://github.com/lionheart/django-pyodbc/pull/96,django_pyodbc 现在应该可以与 Django 1.8 一起使用。所以对于那些需要 SQL Server 2008 R2 支持的人来说,这似乎是 django-mssql 的一个很好的替代方案。

于 2016-01-13T19:05:24.043 回答