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)