请看我在其他答案无效的尝试后,写的安装指南:
首先,安装以下库:
$ brew install unixodbc
$ brew install freetds --with-unixodbc
现在,FreeTDS应该可以直接使用,无需配置:
$ tsql -S [IP or hostname] -U [username] -P [password]
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> ^D
在使用unixODBC时,我们需要链接驱动程序并编辑/usr/local/etc/odbcinst.ini
文件:
[FreeTDS]
Description = TD Driver (MSSQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsodbc.so
FileUsage = 1
我们正在使用的测试命令需要配置 DSN,因此请编辑 /usr/local/etc/odbc.ini
:
[MYDSN]
Driver = FreeTDS
Server = [IP address]
Port = 1433
您的DNS配置可能会有所不同,您可能需要TDS_Version
或Servername
指令。上述内容适用于SQL Server 2008 R2。现在,请运行测试命令:
$ isql MYDSN [username] [password] -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> ^D
如果测试成功,您可以继续安装Python库
pyodbc
。当前编写的版本(3.0.7)在OS X上不与unixODBC链接,因此必须对
setup.py
进行更改。下载源包并将其提取到某个位置。找到以下行(146-147):
elif sys.platform == 'darwin':
# OS/X now ships with iODBC.
并更改此行:
settings['libraries'].append('iodbc')
进入:
settings['libraries'].append('odbc')
然后运行以下命令进行安装:
> python install .
现在 pyodbc 应该可以工作了:
import pyodbc
pyodbc.connect('DSN=MYDSN
您不需要在odbc.ini
中配置您的DSN,因此请清空该文件。您可能希望在连接时选择一个数据库,因此请更改您的连接行以读取:
pyodbc.connect('DRIVER=FreeTDS;SERVER=[IP address];PORT=1433;DATABASE=[database];UID=[username];PWD=[password]')
请注意,您还可以链接到FreeTDS的库文件,而不是使用 odbcinst.ini
,像这样:
pyodbc.connect('DRIVER=/usr/local/lib/libtdsodbc.so;SERVER=[IP address];PORT=1433;DATABASE=[database];UID=[username];PWD=[password]')