Проблемы с использованием django-pyodbc с python manage.py dbshell/loaddata

У меня проблемы с подключением к базе данных SQL Server через python manage.py dbshell/loaddata.

Я установил Ubuntu с FreeTDS, unixODBC, pyodbc (3.0.7) и django-pyodbc отсюда: https://github.com/lionheart/django-pyodbc/

Я могу успешно запустить миграцию syncdb и South. Однако, когда я пытаюсь запустить dbshell или loaddata, я получаю эту ошибку:

[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

Я могу подключиться из командной строки, используя isql и tsql. Любые идеи о том, что мне не хватает?


person FlipperPA    schedule 24.06.2014    source источник


Ответы (1)


Итак, я разобрался с проблемой.

Если вы хотите использовать dbshell или loaddata, вам нужно использовать именованный DSN, а не просто хост. Я правильно настроил это в /etc/freetds.conf, /etc/odbcinst.ini и /etc/odbc.ini, поэтому tsql и isql работали.

Я использовал эту базу данных по умолчанию в settings.py:

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'HOST': 'hostname.domain.com,1433',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

Мне пришлось изменить его на:

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'dsn': 'dsn_name',
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

Вы заметите, что в первом (неработающем) примере используется «HOST», а во втором (рабочем) примере используется «dsn» в разделе «OPTIONS».

person FlipperPA    schedule 24.06.2014
comment
Я изменил версию TDS с 8.0 на 7.2 на этой странице: freetds.org/userguide/choosingtdsprotocol.htm — я также могу подтвердить, что это работает на SQL Server 2012 и 2014. - person FlipperPA; 01.07.2014