使用 Django pyodbc SQLSERVER 问题
Posted
技术标签:
【中文标题】使用 Django pyodbc SQLSERVER 问题【英文标题】:Use Django pyodbc SQLSERVER issue 【发布时间】:2012-06-01 13:30:07 【问题描述】:我正在尝试将 django 与 sqlserver 连接。我已经安装了 python odbc 和 django-odbc。
我的数据库配置(settings.py)
DATABASES =
'default':
'ENGINE': 'sql_server.pyodbc', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'EDAS', # Or path to database file if using sqlite3.
'USER': 'sa', # Not used with sqlite3.
'PASSWORD': '1324', # Not used with sqlite3.
'HOST': 'DBIO01-HP', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '1433' # Set to empty string for default. Not used with sqlite3.
但是,当我尝试运行服务器时出现此错误:
C:\edas>python manage.py runserver
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'
谁能帮我弄清楚如何解决它?
【问题讨论】:
【参考方案1】:通过切换到 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): image not found (0) (SQLDriverConnect)')
【讨论】:
【参考方案2】:看起来有人在这里为 django 1.4 选择了 django-pyodbc https://github.com/avidal/django-pyodbc
【讨论】:
【参考方案3】:兄弟,
这已经 2 岁了...希望您有答案。 对于它的价值:您声明的数据库对象需要一个“选项”参数,见下文。
#Database connector
DATABASES =
'default':
'ENGINE': '',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
'OPTIONS':
'driver': '',
'MARS_Connection': True,
,
【讨论】:
【参考方案4】:看起来 django-odbc 是一个死项目,并且不再与最新的 Django 兼容,从 1.3 版开始。
您可以通过编辑 C:\Python27\lib\site-packages\sql_server\pyodbc\base.py",第 56 行查看 settings.DATABASES['default'].get('options')
来修复它,但如果您这样做,您无疑会发现更多进一步的不兼容。
【讨论】:
是否还有其他活动项目可以替代 django-odbc?【参考方案5】:看看这个分叉:https://github.com/avidal/django-pyodbc
兼容 Django 1.4
【讨论】:
【参考方案6】:这对我有用,特别是 driver_supports_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,
【讨论】:
【参考方案7】:删除Lib\site-packages\
中的sql server文件夹,然后执行
pip install django-pyodbc-azure
pip install sql_server.pyodbc
【讨论】:
以上是关于使用 Django pyodbc SQLSERVER 问题的主要内容,如果未能解决你的问题,请参考以下文章
Django 1.11.7+django_pyodbc_azure-1.11.0.0+pyodbc 连接mssql 数据库