`
javayestome
  • 浏览: 1045560 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Linux 下用 Python 连接 MSSql Server 2008

阅读更多

Linux 下用 Python 连接 MSSql Server 2008

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

KeywordsLinuxpythonpyodbcfreetdsunixODBCtsqlisqlmssqlmssql servermssql 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 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

分享到:
评论

相关推荐

    MSSQL SQLServer分布式集群Python自动故障转移脚本

    【MSSQL 】SQLServer分布式集群Python自动故障转移脚本 #安装依赖 pip install pymssql #windows打包 pyinstaller -w -F mssqlScript.py ######or pyinstaller -F mssqlScript.py #windows运行 ./mssqlScript.exe ...

    linux支持mssql数据库安装包

    这个压缩包“linux支持mssql数据库安装包”提供了在Linux环境下安装和使用MSSQL所需的关键组件。主要涉及的知识点有: 1. **FreetDS**:压缩包中的`freetds-0.82`是关键,它是FreeTDS项目的一部分,是一个开放源...

    linux下centos7部署sql server.docx

    "Linux 下 CentOS 7 部署 SQL Server" Linux 是一个流行的开源操作系统,而 CentOS 7 是基于 Red Hat Enterprise Linux 的一个发行版。SQL Server 是一个关系数据库管理系统,由微软公司开发。下面是将 SQL Server ...

    freetds_mssql.rar

    总之,FreetDS是Linux环境下连接MSSQL数据库的重要工具,通过正确配置和使用,可以在非Windows系统上实现与MSSQL的无缝交互。理解并熟练掌握上述步骤,将有助于你在Linux环境中管理和操作MSSQL数据库。

    freetds-patched.tar.gz linux安装mssql扩展

    总的来说,"freetds-patched.tar.gz"提供了一种在Linux环境下与MS SQL Server进行交互的方法,尤其适用于那些不能或不愿意使用Windows系统的开发者和管理员。通过这个补丁版本,用户可以在不稳定的官方下载源之外...

    mssql-cli:具有自动完成功能和语法突出显示功能SQL Server命令行客户端

    mssql-cli 是用于SQL Server的交互式命令行查询工具。 这个开源工具可以跨平台工作,并且很自豪成为社区的一部分。...用pip安装python -m pip install mssql-cli 请参阅以获取更多特定于平台的信息。连接到服务器

    freetds最新的版本freetds-patched.tar.gz

    描述提到这是Freetds的最新版本1.1.4,专为在Linux下连接Windows数据库设计,并且强调了其有效性。 **Freetds详解** Freetds是一个开放源代码的软件包,它实现了Open Client Interface for SQL (ODBC)和Structured...

    SQLServer 2019

    4. **高级分析**:结合了机器学习服务,SQL Server 2019可以在数据库内部运行R和Python脚本,实现数据预处理、模型训练和预测,大大简化了数据分析流程。 5. **灾难恢复和高可用性**:SQL Server 2019提供了多种高...

    MSSQL:SQL Server 2019

    作为MSSQL(Microsoft SQL Server)系列的最新版本,SQL Server 2019带来了诸多新特性和增强功能,旨在提升性能、安全性和易用性。 **核心特性** 1. **增强的大数据支持**:SQL Server 2019引入了Big Data ...

    Support_Error_log:用python编写的自动化程序,用于使用不同的数据库(mssql,verticaql,postgres)以及不同的操作系统(例如Windows和linux)在不同服务器类型上自动进行日志处理和警报

    其次,Support/Error_log支持多种数据库集成,包括Microsoft SQL Server (MSSQL)、Vertica SQL和PostgreSQL。这使得程序能够将日志数据存储在不同的数据库中,便于进行大规模数据分析和报表生成。同时,数据库选择的...

    mssql-scripter:新SQL跨平台命令行工具的存储库

    您可以在Linux,macOS和Windows上使用mssql-scripter为在任何地方运行SQL Server,Azure SQL数据库和Azure SQL数据仓库中的数据库对象生成数据定义语言(DDL)和数据操作语言(DML)T-SQL脚本。 您可以将生成的T-...

    python-vagrant-centos7:在Python 3.6上开发的Vagrant框,为Django 2.x开发提供了许多附加功能

    **CentOS 7**:作为虚拟机的基础操作系统,CentOS 7是一个稳定、安全且广泛使用的Linux发行版,适合于服务器和开发环境。选择CentOS 7是因为其对最新软件包的良好支持,尤其是对于Python 3.6和Django 2.x。 **...

    dotfiles.stow:我Linux机器的个人配置

    11. **mssql-cli**:微软提供的SQL Server命令行工具,提供了更好的交互体验。 12. **Thinkvim**:针对Vim的一套配置,旨在模仿VSCode的用户体验,尤其适合Python开发者。 从“压缩包子文件的文件名称列表”来看,...

    运维工程师岗位职责 .doc

    4. 熟悉使用脚本语言 Shell、Python、PHP 等(至少一种)。 5. 具有一定阅读英文技术文档能力。 在实际工作中,运维工程师需要具备良好的沟通能力、团队合作能力和问题解决能力,并需要不断学习和掌握新的技术和...

    PySQLExec-开源

    1. **跨平台支持**:`PySQLExec` 兼容 Linux 和 Windows 系统,这得益于 Python 的跨平台特性,使得用户无论在哪种环境下都能进行 SQL 查询和管理。 2. **图形化界面**:该工具提供了直观易用的图形用户界面(GUI)...

    推荐几款CMS建站系统知识.pdf

    ***Server CMS:SiteServer CMS是.NET平台下的CMS系统,它使用.NET技术和***开发,支持 MSSQL 数据库。SiteServer CMS适合中大型企业构建内容网站,尤其擅长多站点管理和多语言站点的搭建。SiteServer CMS秉承了.NET...

    Web基础知识和技术指导.pdf

    - MSSQL:微软的SQL Server,一种关系型数据库管理系统。 - MySQL:一种流行的开源关系型数据库管理系统。 - SQL:结构化查询语言,用于管理关系数据库。 Web内容管理和服务: - CMS:内容管理系统,用于管理网站...

Global site tag (gtag.js) - Google Analytics