歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 下用 Python 連接 MSSql Server 2008

Linux 下用 Python 連接 MSSql Server 2008

日期:2017/2/28 16:06:34   编辑:Linux教程

Keywords:Linux、python、pyodbc、freetds、unixODBC、tsql、isql、mssql、mssql server、mssql server 2008

緣起

因為客戶要求在應用上部署 mssql server 2008,而我們習慣了開發 Linux 下的服務器程序,所以就有了在 linux 下用 python 連接 mssql server 2008 的需求。這個需求非常折騰人,我們花了許多時間在上面,仍然沒有搞定。後來是請了 python-cn 列表的 vcc 出手,通過 ssh 直接上機操作才搞定的;相信以後搞不定的人還會不少,所以就把其中的經驗寫出來,方便後來者,也方便自己日後發布應用程序時能夠有一個指導性的文檔。

寫作本文時我們用的實驗機器安裝的是 Ubuntu 8.04,使用其它 linux 發行版的朋友請相應地更改 shell 命令。

安裝unixODBC

unixODBC 是 linux 下的 ODBC 驅動管理器,官網:http://unixodbc.org。先確保你已經裝上了它。如果你在 ubuntu/debian 下,直接執行:
sudo apt-get install unixODBC unixODBC-bin

就可以把 unixODBC 裝上了,附帶裝上了圖形化的 ODBC 管理器 ODBCConfig,它的樣子大概是這樣的:

如果你確定會在命令行下工作,就不安裝 unicODBC-bin 也可以。而且後文的相關操作也是通過命令行來完成的,不會使用 ODBCConfig,提到這個只為方便 GUI 愛好者。

安裝Freetds

Freetds 是應用最為廣泛的 Linux 下的 ODBC 驅動,官網:http://www.freetds.org/。因為我們用的版本是 0.82 版,而 ubuntu 的更新源裡仍然是 0.63 版本,我這邊建議你執行 sudo apt-get remove freetds freetds-dev 來把以前裝的版本刪除掉,然後下載 0.82 或更新的版本。

編譯 freetds 的時候一定要注意 configure 的參數,我估計當時我編譯的時候參數沒有設置正確,所以一直沒有能夠連上 mssql server。Vcc 分享了他的編譯參數,如下:
./configure /

--prefix=/etc/freetds /

--with-tdsver=8.0 --enable-msdblib /

--enable-dbmfix /

--with-gnu-ld /

--enable-shared /

--enable-static

執行 configure 之後再 sudo make,sudo make install,耐心等候安裝完成就可以了。

安裝完成後,該用 tsql 測試一下,測試的方式是執行:
tsql –H mssql-server-ip –U username –P password

出現 1> 提示符就是成功啦。

配置 freetds

Freetds 的配置文件位置在 /etc/freetds/freetds.conf 裡,打開後在最後面增加如下一個 section:

138 [db4]

139 host = 192.168.18.4

140 port = 1433

141 tds version = 7.0

其中 host 是 mssql server 的地址,tds version 是指定使用哪個 tds 版本,據 vcc 說,用 7.0 的兼容性比較好,我小試了一下,8.0 也是可以的。

完成以後,應該用 tsql 測試一下,測試的方式是執行:
tsql –S db4 –U username –P password

看到 1> 標識符就是成功啦。

配置 ODBC 驅動

接下來我們要配置一個 ODBC 驅動,驅動存儲在 /etc/odbcinst.ini 文件中,用 vi 打開後,寫入下面的內容:

1 [SQL Server]

2 Description = MS-SQLServer

3 Driver = /usr/local/freetds/lib/libtdsodbc.so

4 Driver64 = /usr/local/freetds/lib/libtdsodbc.so

5 Setup = /usr/lib/odbc/libtdsS.so

6 Setup64 = /usr/lib/odbc/libtdsS.so

7 UsageCount = 1

8 CPTimeout =

9 CPReuse =

10 FileUsage = 1

這樣我們就配置好一個名為 SQL Server 的驅動了。如果你的 odbcinst.ini 之前是空的,可能還需要這樣一個 section:

12 [ODBC]

13 Trace = Yes

14 TraceFile = /tmp/sql.log

15 ForceTrace = No

16 Pooling = Yes

其中 Trace 是指定要不要寫 log,寫 log 會降低程序性能,發布版記得把 Trace 的值改為 No。

配置 ODBC 數據源

現在該到配置數據源的時候了,ODBC 數據源存放在 /etc/odbc.ini 文件中,我們用 vi 打開,然後加入如下內容:

8 [mssql2k8]

9 Description = link to 18.4

10 Driver = SQL Server

12 Servername = db4

14 Database = tempdb

可以看到這個名為 mssql2k8 的數據中,使用了前面在 odbcinst.ini 中定義的驅動“SQL Server”,在 freetds.conf 中定義的 db4 數據庫服務器,前面的工作必不可少哇。

配置完成後可以使用 isql 測試一下,測試方式是執行:
isql mssql2k8 username password

在 isql 中你可以執行相應的 sql 語句,比如 select * from table,看看是不是真的已經能夠從 mssql server 2008 中取得數據了。

安裝 pyodbc

無疑,這一步是最容易的了。先到這裡(http://code.google.com/p/pyodbc/downloads/list)下載 pyodbc 源碼包,然後解壓到相應的目錄,再執行:
sudo python setup.py build
sudo python setup.py install
即可。

最後仍然是測試,可以參考http://code.google.com/p/pyodbc/wiki/Examples的代碼。

Copyright © Linux教程網 All Rights Reserved