2012-06-01 2 views
5

Я пытаюсь подключить django с sqlserver. Я уже установил python odbc и django-odbc.Использовать Django pyodbc SQLSERVER issue

Моя конфигурация dabase данных (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: \ ЭДАС> питон 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' 

Может кто-то помочь мне, чтобы выяснить, как это исправить?

ответ

0

Братан,

это 2-х лет в настоящее время .. надеюсь, у вас есть ответ. Для чего стоит: Объект Database, который вы объявляете, нуждается в параметре «options», см. Ниже.

#Database connector 
 
DATABASES = { 
 
    'default': { 
 
     'ENGINE': '', 
 
     'NAME': '', 
 
     'USER': '', 
 
     'PASSWORD': '', 
 
     'HOST': '', 
 
     'PORT': '', 
 
     'OPTIONS': { 
 
      'driver': '', 
 
      'MARS_Connection': True, 
 
     }, 
 
    } 
 
}

0

Похоже, что django-odbc является мертвым проектом и больше не совместим с последним Django, начиная с версии 1.3.

Вы можете исправить это, отредактировав C: \ Python27 \ lib \ site-packages \ sql_server \ pyodbc \ base.py ", строка 56, чтобы посмотреть на settings.DATABASES['default'].get('options'), но если вы это сделаете, вы, несомненно, обнаружите больше несовместимостей далее вниз по линии.

+1

есть ли другой активный проект, чтобы заменить Джанго-ODBC? – fandreacci

3

я получил немного дальше за счет перехода к ветви упомянутого Майкла Baltaks. Я использовал следующие команды, чтобы деинсталлировать старый несовместимый вариант:

$ pip uninstall sql-server.pyodbc 

, а затем установить версию ГИТ-хаб:

$ 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)')

0

Это работает для меня, определенно 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, 
      } 
     }