Linux下python连接sqlserver

68 篇文章 1 订阅
53 篇文章 2 订阅

 

  最近需要获取一批mssql服务器上的相关数据进行分析,由于需要每天定时获取mssql的数据,并进行报警,而且平时都是在linux下工作,这可犯愁了,google发现一个类似MySQLdb的python模块叫pymssql,是用来专门链接mssql的,于是赶紧下载下来试用一番,发现一直链接失败,一定是我打开的方式不对...

 

于是我换了一个方案:ODBC+FreeTDS+pyodbc

试验环境:ubuntu12.04 

1 安装ODBC 

?

1

apt-get install unixodbc unixodbc-binunixodbc-dev

2 安装pyodbc 

?

1

apt-get install python-pyodbc

3 安装FreeTDS 

?

1

apt-get install freetds-binfreetds-common freetds-dev tdsodbc

    tdsodbc为FreeTDS的关键包,含有MSSQL的驱动程序文件libtdsodbc.so,而unixodbc为Linux上的ODBC框架,含有关键二进制文件:libodbc.so或libodbc.so.1

    在前三步把相关的数据包安装完毕后,就得配置数据源了,主要是配置三个文件:/etc/odbc.ini、/etc/odbcinst.ini、/etc/freetds/freetds.conf

4 配置FreeTDS

  /etc/freetds/freetds.conf 默认freetds.conf是有内容的,下面我们追加两台mssql配置信息

 

?

1

2

3

4

5

6

7

8

9

10

[MQ1]

    host=jydb01.cloud-data.guol.com

    port=1433

    tds version =8.0

        client charset =UTF-8

[MQ2]

        host=jydb01.cloud-stg.guol.com

        port=1433

        tds version =8.0

        client charset =UTF-8

  配置参数解释:

  [MQ1]                 表示客户端链接哪台服务器,名称可以自己定义。The servername is chosen at the client's descretion.
         host           数据库服务器的地址
         port           数据库监听的端口
         tds version    使用哪个版本的TDS协议
         client charset 设置客户端的字符集

   更详细的配置参考man freetds.conf,配置完成后就需要测试了,使用tsql命令,tsql是用来测试FreeTDS连接和请求的

 

?

1

tsql-S MQ1 -U dbcheck  -p1433-P password

   看到上面就表示成功啦

5 配置ODBC

  5.1 先配置/etc/odbcinst.ini文件,默认该文件是空的

 

?

1

2

3

4

5

6

[FreeTDS]

Description=FreeTDS

Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

FileUsage=1

client charset =utf-8

    配置参数解释:

   [FreeTDS]    定义的驱动名称
   Description  描述信息
   Driver       库libtdsodbc.so的路径
   Setup  

   5.2 接着配置/etc/odbc.ini文件,该文件默认是空的

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

[MQ1]

Driver         =FreeTDS

Server         =jydb01.cloud-data.guol.com

User           =dbcheck

TDS_Version    =8.0

Port           =1433

 

[MQ2]

Driver         =FreeTDS

Server         =jydb01.cloud-stg.guol.com

User           =dbcheck

TDS_Version    =8.0

Port           =1433

   配置参数解释:

   [MQ1]       DSN的名称,不要和FreeTDS中的混淆,两者不必一样的
   Driver      使用哪个ODBC驱动
   Server      远程服务器地址
   User        数据库用户
   TDS_Version 使用的TDS协议版本
   Port        数据库服务器端口

  5.3 测试看目前服务器有哪些ODBC驱动:

 

?

1

odbcinst-q-d

  看到以上内容就说明我明我们配置的FreeTDS成功了

   5.4 现在测试是否可以在linux下链接到mssql服务器上:

?

1

isql  MQ1 dbcheck passwd

   成功了...

6 使用pyodbc链接mssql

 

?

1

2

3

4

5

6

7

8

9

importpyodbc

importsys

 

try:

    conn=pyodbc.connect('DRIVER={FreeTDS};SERVER=10.22.102.11;port=1433;DATABASE=barra;UID=dbcheck;PWD=passwd;TDS_Version=8.0;')

    print'connect ok......'

exceptException,e:

    printe

    sys.exit()

7  以正确的方式打开 pymssql  

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

importpymssql

importsys 

 

try:

    con_mssql=pymssql.connect(host='jydb01.cloud-data.guol.com',user='dbcheck',password='passwd',charset="utf8")

    print'connect ok...'

exceptException,e:

    printe

    sys.exit()

cursor=con_mssql.cursor()

sql="select count(*) from JYDB.dbo.QT  where TradingDay='2013-10-17'"

cursor.execute(sql)

data=cursor.fetchall()

printdata

至此,终于可以在linux下用python连接mssql。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值