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

#python #django #pyodbc #django-pyodbc

#питон #джанго #pyodbc #django-pyodbc

Вопрос:

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

Я настроен на 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. Есть какие-нибудь идеи о том, чего мне не хватает?

Ответ №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'
    },
 

Вы заметите, что в первом (неработающем) примере используется «ХОСТ», в то время как во втором (рабочем) примере используется «dsn» в разделе «ПАРАМЕТРЫ».

Комментарии:

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