给定数据库的ODBC连接字符串,如何修改我的settings.py以使Django应用程序可以连接到它?

时间:2018-12-31 18:45:07

标签: python django django-pyodbc

已为我提供了一个ODBC连接字符串以连接到数据库。但是,我很难让我的Django应用程序连接到它。使我的应用程序连接到它的正确步骤是什么?我在代码中遗漏了什么吗?

这是我的连接字符串:

Driver={SQL Anywhere 17};uid=user;pwd=secret;server=databasename;astart=No;host=127.0.0.1;port=1234

使用使用pyodbc的测试脚本,我可以连接到数据库。但是,当我尝试为我的应用程序修改settings.py文件时,它无法连接到数据库。

Requirements.py

django~=2.1.4
pyodbc~=4.0.25
django-pyodbc-azure~=2.1.0.0

Settings.py

#First Attempt
DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': '127.0.0.1,1234',
        'USER': 'user',
        'PASSWORD': 'secret',
        'NAME': 'databasename',
        'PORT': '1234',
        'OPTIONS': {
            'driver' : 'SQL Anywhere 17',
            'host_is_server': 'True',
        },
    }
}

#Second Attempt
DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': '',
        'NAME': 'databasename;',
        'PORT': '',
        'OPTIONS': {
            'host_is_server': 'True',
            'dsn': 'Driver={SQL Anywhere 17};uid=user;pwd=secret;server=databasename;astart=No;host=127.0.0.1;port=1234'
        },
    }
}

第一次尝试,出现以下错误:

django.db.utils.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

第二次尝试时,出现以下错误:

django.db.utils.Error: ('IM010', '[IM010] [Microsoft][ODBC Driver Manager] Data source name too long (0) (SQLDriverConnect)')

我不确定我在做什么错。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

欢迎堆栈溢出,本杰明!试试看:

g++ --version

这里的一个键是DATABASES = { "default": { "ENGINE": "sql_server.pyodbc", "HOST": "127.0.0.1", "PORT": "1234", "NAME": "databasename", "USER": "user", "PASSWORD": "secret", "AUTOCOMMIT": True, "OPTIONS": { "driver": "SQL Anywhere 17", "unicode_results": True, "host_is_server": True, }, }, } 设置。它必须与"driver"文件中驱动程序部分的标题匹配。例如,我的odbcinst.ini中包含以下内容:

/etc/odbcinst.ini

在我的情况下,我在[ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1 UsageCount=1 词典中使用:"driver": "ODBC Driver 17 for SQL Server",,因此它与OPTIONS配置文件中的标题匹配。这是我看到大多数人绊倒的地方。祝你好运!