使用Django pyodbc SQLSERVER问题

使用Django pyodbc SQLSERVER问题,django,pyodbc,django-pyodbc,Django,Pyodbc,Django Pyodbc,我正在尝试将django与sqlserver连接起来。我已经安装了python odbc和django odbc 我的数据数据库配置(settings.py) 但是,我在尝试运行服务器时遇到以下错误: C:\edas>python manage.py运行服务器 Validating models... Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib

我正在尝试将django与sqlserver连接起来。我已经安装了python odbc和django odbc

我的数据数据库配置(settings.py)

但是,我在尝试运行服务器时遇到以下错误:

C:\edas>python manage.py运行服务器

Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.comma
nds.runserver.Command object at 0x02EC2E70>>
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 91, in inner_run
    self.validate(display_num_errors=True)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "C:\Python27\lib\site-packages\django\core\management\validation.py", line 23, in get_validation_errors
    from django.db import models, connection
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 40, in <module>
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 24, in load_backend
    return import_module('.base', backend_name)
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module
    __import__(name)
  File "C:\Python27\lib\site-packages\sql_server\pyodbc\base.py", line 56, in <module>
    elif 'collation' in settings.DATABASE_OPTIONS:
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 185, in inner
    return func(self._wrapped, *args)
AttributeError: 'Settings' object has no attribute 'DATABASE_OPTIONS'
正在验证模型。。。
由启动的线程中存在未处理的异常
回溯(最近一次呼叫最后一次):
文件“C:\Python27\lib\site packages\django\core\management\commands\runserver.py”,第91行,在内部运行
self.validate(display\u num\u errors=True)
文件“C:\Python27\lib\site packages\django\core\management\base.py”,第266行,在validate中
num\u errors=get\u validation\u errors(s,app)
文件“C:\Python27\lib\site packages\django\core\management\validation.py”,第23行,在get\u validation\u errors中
从django.db导入模型,连接
文件“C:\Python27\lib\site packages\django\db\\uuuuu init\uuuuuu.py”,第40行,在
后端=加载\后端(connection.settings \ dict['ENGINE'])
文件“C:\Python27\lib\site packages\django\db\\ uuuuu init\uuuuuu.py”,第34行,在\uuuu getattr中__
返回getattr(连接[默认\u DB\u别名],项)
文件“C:\Python27\lib\site packages\django\db\utils.py”,第92行,在\uu getitem中__
后端=加载\u后端(db['ENGINE'])
文件“C:\Python27\lib\site packages\django\db\utils.py”,第24行,在load\u后端
返回导入_模块('.base',后端_名称)
文件“C:\Python27\lib\site packages\django\utils\importlib.py”,第35行,在导入模块中
__导入(名称)
文件“C:\Python27\lib\site packages\sql\u server\pyodbc\base.py”,第56行,在
elif settings.DATABASE_选项中的“排序规则”:
文件“C:\Python27\lib\site packages\django\utils\functional.py”,第185行,在内部
返回函数(自包装,*args)
AttributeError:“设置”对象没有“数据库\u选项”属性

有人能帮我找出解决方法吗?

看起来django odbc是一个死项目,从1.3版开始,它不再与最新的django兼容


您可以通过编辑C:\Python27\lib\site packages\sql\u server\pyodbc\base.py”第56行查看
settings.DATABASES['default'].get('options')来修复它
,但如果您这样做,您无疑会发现更多的不兼容问题。

看起来有人在这里为django 1.4选择了django pyodbc

我切换到Michael Baltaks提到的分支,从而更进一步。我使用以下命令卸载了旧的不兼容版本:

$ pip uninstall sql-server.pyodbc
然后安装git hub版本:

$ pip install https://github.com/avidal/django-pyodbc/archive/django-1.4.zip
然而,这并没有让我一直工作。我现在得到以下错误:

pyodbc.Error:('00000','[00000][iODBC][Driver Manager]dlopen({FreeTDS},6):找不到映像(0)(SQLDriverConnect)'


看看这个叉子:

它与Django 1.4兼容

这是2岁了…希望你有一个答案。 关于它的价值:您声明的数据库对象需要一个“options”参数,请参见下文

#数据库连接器
数据库={
“默认值”:{
“引擎”:“,
“姓名”:“,
“用户”:“,
“密码”:“,
“主持人”:“,
“端口”:“,
“选项”:{
“司机”:“,
“火星连接”:正确,
},
}

}
这对我很有效,特别是驱动程序支持utf8线路:

'dbconn': {
            'CREATE_DB': False,
            'CREATE_USER': False,
            'CREATE_TBLSPACE': False,
            'ENGINE': 'django_pyodbc',
            'NAME': 'DBNAME',
            'USER': 'user',
            'PASSWORD': 'password',
            'HOST': 'HOST',
            'OPTIONS': {
                'host_is_server': True,
                'driver_supports_utf8': True,
            }
        }

删除
Lib\site packages\
中的sql server文件夹,以便执行 pip安装django pyodbc azure
pip安装sql_server.pyodbc

是否有任何其他活动项目来替换django odbc?
'dbconn': {
            'CREATE_DB': False,
            'CREATE_USER': False,
            'CREATE_TBLSPACE': False,
            'ENGINE': 'django_pyodbc',
            'NAME': 'DBNAME',
            'USER': 'user',
            'PASSWORD': 'password',
            'HOST': 'HOST',
            'OPTIONS': {
                'host_is_server': True,
                'driver_supports_utf8': True,
            }
        }