【发布时间】:2018-04-21 04:58:27
【问题描述】:
非常感谢您对此问题的任何帮助。
目标:使用 FreeTDS 将 Django 连接到 MSSQL 服务器。我使用的是 Debian x64 机器。
问题:尝试建立连接时,我得到以下信息。
('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'libtdsodbc.so' : file not found (0) (SQLDriverConnect)")
我的/etc/odbcinst.ini配置如下
[FreeTDS]
Description = FreeTDS
driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
文件确实存在并且有 777 访问权限进行测试。
连接字符串是这样的
cnxn = pyodbc.connect(
'DRIVER={FreeTDS};SERVER=' + server + ';PORT=1443;DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = cnxn.cursor()
我的 odbcinst -j 读取(因为添加了符号链接)
unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
【问题讨论】:
-
那里建议的更改对我不起作用。不过,我会试试 pymssql。
-
不确定,但您是否尝试直接在 /usr/lib 中添加符号链接?
sudo ln -s /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so /usr/lib/libtdsodbc.so&&sudo ldconfig。我在导入期间遇到了其他 .so 库的问题,它对我有用。 -
似乎 UnixODBC 正在“/usr/local/etc/odbcinst.ini”中寻找驱动程序定义,而不是“/etc/odbcinst.ini”。
-
我还建议不要在 Linux 上为 Django 尝试
pymssql;引擎很久没有更新了。我在这里推荐django-pyodbc-azure(即使您在没有Azure 的情况下连接到SQL Server):github.com/michiya/django-pyodbc-azure 我已经成功使用它与unixODBC 和FreeTDS 多年。
标签: python sql linux pyodbc freetds