zoukankan      html  css  js  c++  java
  • Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案

    一、基本原理
    请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/
     
    二、实现步骤
    1、安装linux下SQL Server的驱动程序
    安装Freetds,不要使用apt-get install 来安装,因为源里的版本不一定是新的,建议使用stable版本, 下载源码手工编译安装,因为有好些参数需要在编译中指定的。
    执行以下命令:
    tar zfvx freetds-stable.tgz
    cd freetds-*
    ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
    make
    sudo make install(注意是root)
    Freetds已经安装成功了;再安装一个小工具freetds-bin,用来测试连接数据库:
    apt-get freetds-bin
    安装完毕后,可以使用tsql命令来进行测试SQL Server数据库连接:
    tsql –H mssql-server-ip –U username –P password
    出现 1> 提示符就是成功啦
     
    2、安装linux下的ODBC驱动管理程序
    安装unixODBC,让linux下的应用程序可以通过ODBC来访问数据源。我们需要分别安装unixodbc,unixodbc-dev,unixodbc-bin(可选),tdsodbc
    apt-get install unixodbc unixodbc-dev  unixodbc-bin tdsodbc
    ODBC驱动管理器通过配置文件管理数据库驱动和数据源,分别有数据库驱动的配置文件和数据源的配置文件odbcinst.ini和odbc.ini,其所在的位置可能会因操作系统和安装方式而异,不过可以使用odbcinst -j命令来查看。
    这两个文件是没有内容的,现在我们要做的就是配置数据驱动以及数据源。配置ODBC的时候,我们可以直接往两个配置里面增加内容,但这种方式不推荐,而推荐使用odbcinst命令来安装驱动信息和数据源信息。
     
    配置数据驱动
    首先,创建一个tds.driver.template的文件,输入以下内容并保存:
    [TDS]
    Description          = FreeTDS Driver for Linux & MSSQL on Win32
    Driver          = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    Setup          = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

    [TDS]这一行意为开始定义一个名叫TDS的数据库驱动,下面是这个数据库的相关属性,请检查一下,Driver和Setup所指的两个lib文件是否存在或路径是否正确,如果不存在,要好好检查一下这一步的安装工作有没到位啦,现在把tds.driver.template里定义的数据库驱动安装到系统的ODBC驱动库,执行如下命令:

    sudo odbcinst -i -d -f tds.driver.template
    -i 表示install,安装
    -d 表示driver,所安装的是驱动 
    -f 表示file,指定要安装的文件
     
    配置数据源
    接下来,创建一个tds.datasource.template文件,输入以下内容并保存:
    [my_data]
    Description          = Connection to windows virtual machine
    Driver          = TDS
    Trace          = No
    Database          = p10
    Server          = 192.168.88.200
    Port          = 1433
    TDS_Version          = 7.1
    [my_data]一行意为开始定义一个名叫my_data的数据源。Driver属性指定的名字是预定义好的TDS驱动,其他是一些数据库的相关属性,如服务器地址,端口等。
    现在把tds.datasource.template文件里定义的数据源安装到系统的ODBC数据源中,执行下面的命令: 
    sudo odbcinst -i -s -l -f /etc/tds.datasource.template
    -i 表示install,安装
    -s 表示source,所安装的是数据源
    -l 表示把数据源安装到系统的全局数据源配置文件,用-h则是安装到用户的数据源配置文件中
    -f 表示file,指定要安装的文件
     
    驱动和数据源配置完毕,现在来测试通过ODBC访问SQL Server,使用unixODBC自带的isql命令,使用格式为: isql 数据源名 用户名 密码
    sudo isql my_data sa password
    +---------------------------------------+
    | Connected!                                   |
    |                                                  |
    | sql-statement                                |
    | help [tablename]                           |
    | quit                                            |
    |                                                  |
    +---------------------------------------+
    SQL> 
    如果你看到上面类似的画面,说明ODBC和SQL Server现在沟通得很好,这时你可以在SQL>提示符下输入Sql语句试试了,哈哈~
     
    3、安装odbc协议的python实现–pyodbc
    如果你的机器已经成功安装了pip,那直接用以下命令安装:
    sudo pip install pyodbc
    安装成功后,可以测试一下:
    python
    >>import pyodbc
    >> conn=pyodbc.connect('DSN=数据源名;UID=用户名;PWD=密码')
    更多关于pyodbc的使用可看此网址:http://my.oschina.net/zhengyijie/blog/35587
     
    如果想指定连接哪个数据库的话,可以修改配置文件odbc.ini,把Database的值留空,使用时即可指定数据库,用法如下:
    conn=pyodbc.connect('DSN=数据源名;DATABASE=数据库名;UID=用户名;PWD=密码')
    三、使用方法
    1、通过freetds测试连接SQL Server
    使用freetds的小工具freetds-bin,使用tsql命令,使用格式为:tsql –H mssql-server-ip –U username –P password -p port
    tsql –H 192.168.88.146 –U sa –P dingjia -p 1433
    locale is "zh_CN.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    1>
    如果出现以上类似画面,就说明连接成功了。
     
    2、通过ODBC访问SQL Server
    使用unixODBC自带的isql命令,使用格式为: isql 数据源名 用户名 密码
    sudo isql my_data sa password
    +---------------------------------------+
    | Connected!                                   |
    |                                                  |
    | sql-statement                                |
    | help [tablename]                           |
    | quit                                            |
    |                                                  |
    +---------------------------------------+
    SQL>
    如果你看到上面类似的画面,说明ODBC和SQL Server现在沟通得很好,这时你可以在SQL>提示符下输入Sql语句试试了,哈哈~
     
    3、通过Pyodbc连接SQL Server
    使用格式:conn=pyodbc.connect('DSN=数据源名;DATABASE=数据库名;UID=用户名;PWD=密码')
    python
    >>import pyodbc
    >> conn=pyodbc.connect('DSN=数据源名;UID=用户名;PWD=密码')

    如果想指定连接哪个数据库的话,可以修改配置文件odbc.ini,把Database的值留空,使用时即可指定数据库。

    在方法2、3中,可通过修改/etc/odbc.ini文件的内容来访问不同的SQL Server数据源。
     
    四、开启SQL Server远程连接
    以上环境配置好之后,要成功访问SQL Server,那必须要该SQL Server开启远程连接,具体操作请看:
     
    本文参考文章包括:
  • 相关阅读:
    增强学习笔记 第二章 多臂赌博机问题
    学习计划与目标
    2020秋季新学期
    2019春总结作业
    2019春年第四次课程设计实验报告
    2019春年第三次课程设计实验报告
    2019春年第二次课程设计实验报告
    2019春年第一次课程设计实验报告
    2019春第十二周作业
    2019春第十一周作业
  • 原文地址:https://www.cnblogs.com/lukcyjane/p/3850033.html
Copyright © 2011-2022 走看看