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

Unix/Linux
查看linux 下已经安装的软件包信息
linux 系统中软件raid 配置方法
linux 下MySQL服务器的启动与停止
linux 系统下FTP服务器配置方法
Linux系统下如何挂载U盘,硬盘,光驱
linux 系统下DHCP服务器 配置方法
Linux系统下软件的安装与卸载
在Fedora 9中启用ext4文件系统的方法
linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享
Linux查看文件夹大小的命令
LINUX系统grub常见错误分析
llinux fdisk分区工具 使用方法
linux 系统telnet乱码
rhythmbox 乱码的解决方法
linux单网卡绑定多ip
tar.gz 和tar.bz2 详细解释
linux学习笔记
linux系统rpm安装包详解
linux 服务器常用维护命令
出现The file /boot/grub/stage1 not read cor 解决办法

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


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