设置django-mssql问题



我在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.eg\sqlserver_ado是否需要将其复制到site-package\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或issues似乎也没有任何内容。

此外,如果有其他文件可以帮助,请告诉我。

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

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的文件,所以我复制了它,并将其重命名为adjango.db.backends.util(不带"s"),然后错误消息就消失了!

因此,希望这不会太有害,我继续进行故障排除。

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

  File "C:Program Files (x86)Python35-32libsite-packagessqlserver_adobase.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-32libsite-packagessqlserver_adobase.py", line 18, in <module>
from .introspection import DatabaseIntrospection

文件"C:\Program Files(x86)\Python35-32\lib\site-packages\sqlserver_ado\inspection.py",第3行,位于从django.db.backends导入BaseDatabaseIntrospectionImportError:无法导入名称"BaseDatabaseIntrospection"

所以我把第3行改为:

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

等等。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模块真的能连接到一些东西。

-Sean

您需要确保可以从python shell导入"sqlserver_ado"。

把文件夹sqlserver_ado放在PATH上的某个地方,我把我的放在\site-packages\中

查看README.txt。

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

截至2019年:

我根本无法让Django MSSQL工作。

我换了django pyodbc azure,这很好。

安装:

pip install django-pyodbc-azure

设置:

'ENGINE': 'sql_server.pyodbc'

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

我试图让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

我被引导到这篇文章作为一个解决方案,所以我也会在这里发布我的答案。我降级到django1.6而不是1.8,现在django_pyodbc作为数据库后端工作。

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

相关内容

  • 没有找到相关文章

最新更新