Linux 下用 Python 连接 MSSql Server 2008

赖勇浩(http://blog.csdn.net/lanphaday)

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的代码。

参考资料

CentOs下php连mssql并配置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

Linux 下用 Python 连接 MSSql Server 2008相关推荐

  1. linux tsql,linux下用tsql连接mssql数据库出错

    用tsql连接mssql出现下面的错误 sh-3.2# tsql -H 192.168.1.100 -p 1433 -U sa tsql -H 192.168.1.100 -p 1433 -U sa ...

  2. linux下使用odbc连接mysql_Linux环境下通过ODBC访问MSSql Server

    为了解决Linux系统连接MSSql Server的问题,微软为Linux系统提供了连接MSSql Server的ODBC官方驱动.通过官方驱动,Linux程序可以方便地对MSSql Server进行 ...

  3. Python实现SQL Server 2008的增删查改+连接过程中出现的问题以及解决方法

    Python操作SQL Server 2008需要一个名为pymssql的库,如果没有这个库可以通过在cmd中输入如下命令来安装: pip install pymssql 闲话少说,直接贴代码: # ...

  4. python和sqlserver应用_Windows和Linux下使用Python访问SqlServer的方法介绍

    经常用Python写demo来验证方案的可行性,最近遇到了Python访问SqlServer的问题,这里总结下. 一.Windows下配置Python访问Sqlserver 环境:Windows 7 ...

  5. python 连接sql server

    linux 下pymssql模块的安装 所需压缩包: pymssql-2.1.0.tar.bz2 freetds-patched.tar.gz 安装: tar -xvf pymssql-2.1.0.t ...

  6. linux下nginx+python+fastcgi部署总结(web.py版)

    2019独角兽企业重金招聘Python工程师标准>>> 在上一篇文章linux下nginx+python+fastcgi部署总结(django版)中,我们部署了nginx+djang ...

  7. linux下使用python操作mysql

    linux下使用python操作mysql 文章目录 linux下使用python操作mysql 一.Python 中MySQL的几个模块对象 1.模块 2.Connection 对象 3.Curso ...

  8. python连接SQL Server取多个结果集:Pymssql模块

    基本的用法可以参考:python连接SQL Server:Pymssql模块 和上一篇文章中的代码,只取一个结果集不同,这次会一次运行2个sql语句,然后分别取出2个结果集,打印输出. 代码中有详细的 ...

  9. php 远程连接 sqlserver,Linux下PHP远程连接SqlServer数据库

    最近项目因需要,必须连SqlServer数据库,折腾了两天,弄好了.回头看,其实挺简单的.记录一下. 首先,因为是远程连接,所以 SqlServer的允许远程相关的设置必须开启,防火墙和服务器上相应的 ...

最新文章

  1. CNN数玉米穗--TasselNet: Counting maize tassels in the wild via local counts regression network
  2. 《易学C++(第2版)》——导读
  3. 【算法竞赛学习】二手车交易价格预测-Task2数据分析
  4. 安防监控系统CIF、D1等格式的解释
  5. HTML的script标签
  6. 欧盟批准ATT收购时代华纳 或年底前完成交易
  7. java php cms_内容管理系统的开发策略研究——以PHP CMS、Node.js CMS、Java CMS为例
  8. Codeforces 1189B Number Circle
  9. python 最小二乘法三维坐标拟合平面_【MQ笔记】超简单的最小二乘法拟合平面(Python)...
  10. 大数据-数据抽取(数据降维)算法
  11. 简单介绍几种Java后台开发常用框架组合
  12. SpringCloud——pom文件初始配置
  13. 流殇三月,誓言碎落于天涯
  14. 深度学习论文翻译解析(二十):YOLOv4: Optimal Speed and Accuracy of Object Detection
  15. 面试高并发,凉了!!(全程高能,建议收藏)
  16. Java线程强制执行
  17. 网络安全工程师,念念不忘,必有回响
  18. Spark简介、生态系统
  19. JAVA生成甘特图Excel导出
  20. Python开发——做一个简单的【表白墙】网站

热门文章

  1. Android直播app
  2. NBUT - 1457 Sona
  3. 七星彩长奖表图_够力七星彩奖表长条图
  4. 微博时代的企业公关危机特征研究
  5. sql server 中用sql实现两个表之间的inert/delete/update
  6. 实验三 面向对象初步
  7. 深度学习的音乐创作:回顾
  8. 02--Linux的sed使用
  9. 一篇文章吃透Java ArrayList 面试别问,问就是滔滔不绝!
  10. 6篇干货带你学会用vue开发小程序——mpvue