yum -y install gcc gcc-c++ unixodbc unixODBC-devel python-devel
下载地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gzpython
下载安装包unixODBC-2.3.0.tar.gz放到/usr/local下。c++
unixODBC版本目前有两套,soname为libodbc.so.1与soname为libodbc.so.2sql
对于使用libodbc.so.1的驱动下载unixODBC-2.3.0.tar.gz,做者本身发现最高版本的libodbc.so.1库;
对于使用libodbc.so.2的驱动下载最新的unixODBC便可。数据库
这个软件可以用Linux和Unix链接MS SQLServer和Sybase数据库。vim
官方网站:http://www.freetds.org测试
版本:0.64下载地址:http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz网站
tar xf freetds-stable.tgz cd freetds-0.91/ ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/ --with-tdsver=5.0
# ./configure --prefix=/usr/local/freetds0.91 --enable-msdblib --with-tdsver=8.0 make make install
vi /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> select getdate() 2> go getdate() Nov 29 2018 02:05:20:050PM (1 row affected) 1>
#建立驱动的模板文件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>
unzip pyodbc-3.0.7.zip cd pyodbc-3.0.7 python setup.py install
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)