linux python2.7 mssqlserver_Linux 下用 Python 连接 MSSql Server

缘起因为客户要求在应用上部署 mssql server 2008,而我们习惯了开发 Linux 下的服务器程序,所以就有了在 linux 下用 Python 连接 mssql server 2008 的需求。这个需求非常折腾人,我们花了许多时间在上面,仍然没有搞定。后来是请了 python-cn 列表的 vcc 出手,通过 ssh 直接上机操作才搞定的;相信以后搞不定的人还会不少,所以就把其中的经验写出来,方便后来者,也方便自己日后发布应用程序时能够有一个指导性的文档。

写作本文时我们用的实验机器安装的是 Ubuntu 8.04,使用其它 linux 发行版的朋友请相应地更改 shell 命令。

安装unixODBCunixODBC 是 linux 下的 ODBC 驱动管理器,官网:http://unixodbc.org。先确保你已经装上了它。如果你在 ubuntu/debian 下,直接执行:

sudo apt-get install unixODBC unixODBC-bin

就可以把 unixODBC 装上了,附带装上了图形化的 ODBC 管理器 ODBCConfig,它的样子大概是这样的:

如果你确定会在命令行下工作,就不安装 unicODBC-bin 也可以。而且后文的相关操作也是通过命令行来完成的,不会使用 ODBCConfig,提到这个只为方便 GUI 爱好者。

安装FreetdsFreetds 是应用最为广泛的 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值