设置django-mssql问题

时间:2012-03-30 13:44:54

标签: django 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.egg \ sqlserver_ado 这是否需要复制到 site-包\ django的\分贝\后端

如果我将设置设置为:

,则会出现相同的错误
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服务器上运行。

6 个答案:

答案 0 :(得分:5)

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

将文件夹sqlserver_ado放在PATH的某处,我把它放在\ site-packages \

查看README.txt

引擎确实要设置为“sqlserver_ado”,类似于settings sample page.上的设置

答案 1 :(得分:5)

达斯汀关于确保"导入sqlserver_ado"的评论从命令shell开始,我在安装了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 (没有')离开了错误信息!

所以希望这不是太有害了,我继续进行这一系列的故障排除。

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

  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

文件&#34; C:\ Program Files(x86)\ Python35-32 \ lib \ site-packages \ sqlserver_ado \ introspection.py&#34;,第3行,in     来自django.db.backends导入BaseDatabaseIntrospection     ImportError:无法导入名称&#39; BaseDatabaseIntrospection&#39;

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

from django.db.backends.base.introspection import BaseDatabaseIntrospection
对于creation.py:

等等

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

表示operations.py:

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

for schema.py:

from django.utils.log import getLogger

希望这有助于某人。希望ADO模块实际连接到某些东西。

-Sean

答案 2 :(得分:1)

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

下载

答案 3 :(得分: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

我是directed to this post as a solution,所以我也会在这里发布我的答案。 我降级到django 1.6而不是1.8,现在django_pyodbc作为数据库后端。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

截至2019年:

我根本无法使Django MSSQL正常工作。

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

安装:

pip install django-pyodbc-azure

设置:

'ENGINE': 'sql_server.pyodbc'