2012-06-01 46 views
5

Estoy tratando de conectar django con sqlserver. Ya instalé python odbc y django-odbc.Usar Django pyodbc SQLSERVER problema

Mi configuración dabase de datos (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. 
    } 
} 

Sin embargo, estoy recibiendo este error cuando intento ejecutar el servidor:

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' 

puede alguien ayudarme a averiguar cómo solucionarlo?

Respuesta

0

Bro,

este es de 2 años de edad ahora .. Espero que tengas una respuesta. Por lo que vale: el objeto de base de datos que está declarando necesita un parámetro de 'opciones', consulte a continuación.

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

0

Parece que django-odbc es un proyecto inactivo y ya no es compatible con el último Django, desde la versión 1.3.

Podría solucionarlo editando C: \ Python27 \ lib \ site-packages \ sql_server \ pyodbc \ base.py ", línea 56 para ver settings.DATABASES['default'].get('options'), pero si lo hace, sin duda descubrirá más incompatibilidades más abajo en la línea.

+1

¿Hay algún otro proyecto activo con el fin de reemplazar a django-ODBC? – fandreacci

3

llegué un poco más por el cambio a la rama mencionada por Michael Baltaks. he utilizado los siguientes comandos para desinstalar el versión antigua incompatible:

$ pip uninstall sql-server.pyodbc 

y luego instalar la versión git-hub:

$ pip install https://github.com/avidal/django-pyodbc/archive/django-1.4.zip 

Sin embargo, esto no me obtener toda la manera de trabajar. Ahora sale el siguiente error:

pyodbc.Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({FreeTDS}, 6): image not found (0) (SQLDriverConnect)')

0

Esto funcionó para mí, en concreto la línea 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, 
      } 
     }