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

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-15   浏览: 102 ::
收藏到网摘: 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