【发布时间】:2017-11-01 15:17:30
【问题描述】:
我正在开发一个需要连接到 MS SQL Server 2008 的 django 应用程序。我使用 django-pyodbc-azure 后端。
环境:
- Ubuntu 16.04
- Apache 2.4
- python 3.5.2
- django 1.11.6
- pyodbc 4.0.19
- django-pyodbc-azure 1.11.0.0
我也安装了依赖:unixodbc unixodbc-dev tdsodbc freetds-dev
在/etc/freetds/freetds.conf:
[sqlserver]
host = mysqlserverhost.com
port = 6789
tds version = 8.0
在 /etc/odbc.ini 中:
[sqlserverdatasource]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Servername = sqlserver
Database = test
TDS_Version = 8.0
在 /etc/odbcinst.ini 中:
[ODBC]
Trace = Yes
TraceFile = /tmp/odbc.log
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
然后我用下面的方法测试了连接。
import pyodbc
db = pyodbc.connect('DRIVER={FreeTDS};SERVER=mysqlserverhost.com,6789;DATABASE=test;UID=admin;PWD=password;TDS_Version=8.0')
cursor = db.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
print(row[0])
row = cursor.fetchone()
我可以从上面的代码中看到 SQL Server 的版本。
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
在我的 django 项目 settings.py 中,我配置了数据库后端。
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'test',
'USER': 'admin',
'PASSWORD': 'password',
'HOST': 'mysqlserverhost.com',
'PORT': '6789',
'OPTIONS': {
'driver': 'FreeTDS',
},
}
}
但是,当我打开我的应用页面并看到以下错误时。
File "/usr/local/lib/python3.5/dist-packages/sql_server/pyodbc/base.py" in get_new_connection
309. timeout=timeout)
Exception Type: OperationalError at /myapp/
Exception Value: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
我的设置有什么问题吗?
【问题讨论】:
标签: sql-server django