当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Linux 下用 Python 连接 MSSql Server 2008

Unix/Linux
Linux系统下如何监视系统资源使用率
怎样在Red Hat Linux上使用BIND建立DNS服务器
多点触控技术终于在Linux中实现
中科红旗Linux桌面7.0版引入QtSDK组件
系统启动管理器与GRUB
Linux系统下配置CVS集成cvstrac
解析Linux操作系统下usr的目录结构
Linux系统与Windows系统的线程有何不同
黑客怎样入侵Linux系统
维护inittab配置文件时需要注意的事项
FreeBSD为powerd设置cpu最小工作频率
如何配置Linux才能保证其系统的安全
光驱的软开关与限速简介
新手教程之创建锁文件的方法
双系统计算机怎样卸载其中一个?
运行Linux时的快捷键使用
phpMyAdmin安装方法及介绍
Wine中中文存在很多的乱码怎么解决?
Linux教程:tail命令的巧妙应用
Wget命令来浏览网页的方法

Unix/Linux 中的 Linux 下用 Python 连接 MSSql Server 2008


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-15   浏览: 115 ::
收藏到网摘: n/a

缘起
因为客户要求在应用上部署 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 serverVcc 分享了他的编译参数,如下:
./configure \
--prefix=/etc/freetds \
--with-tdsver=8.0 --enable-msdblib \
--enable-dbmfix \
--with-gnu-ld \
--enable-shared \
--enable-static
执行 configure 之后再 sudo makesudo 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的代码。
参考资料
CentOsphpmssql并配置unixODBC
http://rickyfang.blog.51cto.com/1213/125837
PyODBC, UnixODBC, FreeTDS config
http://203.208.39.99/search?q=cache:a5KR0lOOYaYJ:kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/+pyodbc+inurl:kipb7&hl=zh-CN&ct=clnk&cd=1&gl=cn&client=firefox-a&st_usg=ALhdy293zSnO8RbxkRswuT73jHl3mg25_Q
unixODBC 教學
http://ycfunet.blogspot.com/2008/04/unixodbc.html
“有”情社区
python-cn
http://groups.google.com/group/python-cn