2012-06-01 10 views
5

Ich versuche, Django mit SQL Server zu verbinden. Ich habe bereits python odbc und django-odbc installiert.Verwenden Sie Django pyodbc SQLSERVER Problem

Meine Daten dabase Konfiguration (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. 
    } 
} 

Allerdings bin ich immer diese Fehlermeldung, wenn ich versuche den Server auszuführen:

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' 

Kann mir jemand helfen, um herauszufinden, wie man es beheben?

Antwort

0

Bro,

dies jetzt 2 Jahre alt ist .. Hoffe, du hast eine Antwort. Für was es wert ist: Das Database-Objekt, das Sie deklarieren, benötigt einen Parameter 'options', siehe unten.

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

0

Sieht aus wie django-odbc ist ein totes Projekt und ist nicht mehr kompatibel mit dem neuesten Django, seit Version 1.3.

Sie könnten es möglicherweise beheben, indem Sie C: \ Python27 \ lib \ site-packages \ sql_server \ pyodbc \ base.py ", Zeile 56, um settings.DATABASES['default'].get('options') zu betrachten, aber wenn Sie tun, werden Sie zweifellos mehr Inkompatibilitäten entdecken weiter auf der ganzen Linie.

+1

Gibt es ein anderes aktives Projekt, um django-odbc zu ersetzen? – fandreacci

3

ich habe ein bisschen weiter durch die Umstellung auf den Zweig erwähnt von Michael Baltaks gepflückt hat. Früher habe ich die folgenden Befehle die deinstallieren alte inkompatible Version:

$ pip uninstall sql-server.pyodbc 

und dann die Version git-Hub installieren:

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

Dies aber hat mich nicht den ganzen Weg zu arbeiten. Ich bekomme jetzt die folgende Fehlermeldung:

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

0

Das ist für mich gearbeitet, speziell die driver_supports_utf8 Linie:

'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, 
      } 
     }