【问题标题】:Trouble using django-pyodbc with python manage.py dbshell / loaddata在 python manage.py dbshel​​l / loaddata 中使用 django-pyodbc 时遇到问题
【发布时间】:2014-08-14 21:40:24
【问题描述】:

我无法通过 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 从命令行进行连接。关于我缺少什么的任何想法?

【问题讨论】:

    标签: python django pyodbc django-pyodbc


    【解决方案1】:

    所以,我发现了问题。

    如果你想使用 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”。”

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2022-06-25
    • 1970-01-01
    • 2014-11-20
    • 2017-07-02
    • 2015-11-28
    • 2011-04-29
    相关资源
    最近更新 更多