操作系统是 RHEL6.2
-
安装unixodbc以及依赖包
yum -y install gcc gcc-c++ unixodbc unixODBC-devel python-devel
-
安装 freetds
tar xf freetds-stable.tgz
cd freetds-0.91/
./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/ --with-tdsver=5.0
make
make install
-
配置freetds并用tsql测试连接
vim /usr/local/freetds/etc/freetds.conf
添加如下内容:
[Sybase]
host = IP 地址
port = 端口号
tds version = 5.0
client charset = UTF-8
具体的IP和端口号替换成个人所需即可
测试连接:
/usr/local/freetds/bin/tsql -S Sybase -U 用户名 -P 密码
如果出现如下内容,或者类似内容,表示连接成功,此时可以执行一些SQL语句试试
locale is "en_US.utf8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
-
配置unixodbc以及测试isql
创建驱动的模板文件1.txt 内容如下:
[TDS]
Description = Sybase
Setup = /usr/lib/libtdsS.so
Driver64 = /usr/local/freetds/lib/libtdsodbc.so
Driver = /usr/local/freetds/lib/libtdsodbc.so
setup64 = /usr/lib64/libtdsS.so
FileUsage = 1
UsageCount = 2
然后使用odbcinst安装驱动:
odbcinst -i -d -f 1.txt
执行完成之后,可以检查一下/etc/odbcinst.ini,如果可以看到TDS的内容,说明配置没问题
也可以用odbcinst -q -d 检查驱动
创建数据源的模板文件,内容如下:
[xiaosu]
Driver = TDS
Descrption = Sybase Server
Trace = No
Server = IP地址
Database = 数据库
Port = 端口号
这里的Database,IP地址和端口号替换成自己需要的即可
odbcinst -i -s -f 2.txt
执行完成以后,会在用户的home目录下生成.odbc.ini的文件,vim ~/.odbc.ini检查一下文件内容即可。也可以用odbcinst -q -s检查可用的数据源
用isql测试连接: isql -v xiaosu 用户名 密码
如果出现如下内容,说明连接成功了。
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
-
编译安装pyodbc
unzip pyodbc-3.0.7.zip
cd pyodbc-3.0.7
python setup.py install
-
测试pyodbc连接
新建一个xiaosu.py内容如下:
-
import pyodbc conn=pyodbc.connect("DSN=xiaosu;UID=uid;pwd=password") cursor=conn.cursor() cursor.execute("select name from sysobjects where type =‘U‘") for i in cursor: print i
python xiaosu.py 如果能把数据库中的表全部打印出来,说明成功了