麻烦使用django-pyodbc与python manage.py dbshel​​l / loaddata

时间:2014-06-24 14:53:23

标签: python django pyodbc django-pyodbc

我无法通过python manage.py dbshel​​l / loaddata连接到SQL Server数据库。

我在Ubuntu上安装了FreeTDS,unixODBC,pyodbc(3.0.7)和django-pyodbc: https://github.com/lionheart/django-pyodbc/

我可以成功运行syncdb和South迁移。但是,当我尝试运行dbshel​​l或loaddata时,我收到此错误:

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

我可以使用isql和tsql从命令行连接。关于我缺少的任何想法?

1 个答案:

答案 0 :(得分:0)

所以,我想出了问题。

如果要使用dbshel​​l或loaddata,则需要使用命名的DSN而不仅仅是主机。我在/etc/freetds.conf,/​​etc/odbcinst.ini和/etc/odbc.ini中正确设置了这个,所以tsql和isql正在工作。

我在settings.py中使用了这个默认的DATABASE:

    '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',而第二个(工作)示例在'OPTIONS'下使用'dsn'。