评论

收藏

[Sybase] linux + pyodbc + freetds + unixodbc 连接sybase

数据库 数据库 发布于:2021-07-01 10:01 | 阅读数:574 | 评论:0

  操作系统是 RHEL6.2

  •   安装unixodbc以及依赖包
      yum -y install gcc gcc-c++ unixodbc unixODBC-devel  python-devel
  •   安装 freetds
      tar xf freetds-stable.tgz
      cd freetds-0.91/
      ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/ --with-tdsver=5.0
      make
      make install
  •   配置freetds并用tsql测试连接
      vim /usr/local/freetds/etc/freetds.conf
      添加如下内容:
      [Sybase]
      host = IP 地址
      port = 端口号
      tds version = 5.0
      client charset = UTF-8
      具体的IP和端口号替换成个人所需即可
      测试连接:
      /usr/local/freetds/bin/tsql -S Sybase  -U 用户名 -P 密码
      如果出现如下内容,或者类似内容,表示连接成功,此时可以执行一些SQL语句试试
      locale is "en_US.utf8"
      locale charset is "UTF-8"
      using default charset "UTF-8"
      1>
  •   配置unixodbc以及测试isql
      创建驱动的模板文件1.txt 内容如下:
      [TDS]
      Description             = Sybase
      Setup           = /usr/lib/libtdsS.so
      Driver64                = /usr/local/freetds/lib/libtdsodbc.so
      Driver          = /usr/local/freetds/lib/libtdsodbc.so
      setup64         = /usr/lib64/libtdsS.so
      FileUsage               = 1
      UsageCount              = 2
      然后使用odbcinst安装驱动:
      odbcinst -i -d -f 1.txt
      执行完成之后,可以检查一下/etc/odbcinst.ini,如果可以看到TDS的内容,说明配置没问题
      也可以用odbcinst -q -d 检查驱动
      创建数据源的模板文件,内容如下:
      [xiaosu]
      Driver =  TDS
      Descrption = Sybase Server
      Trace = No
      Server =  IP地址
      Database = 数据库
      Port = 端口号
      这里的Database,IP地址和端口号替换成自己需要的即可
      odbcinst -i -s -f 2.txt
      执行完成以后,会在用户的home目录下生成.odbc.ini的文件,vim ~/.odbc.ini检查一下文件内容即可。也可以用odbcinst -q -s检查可用的数据源
      用isql测试连接: isql -v xiaosu  用户名  密码
      如果出现如下内容,说明连接成功了。
      +---------------------------------------+
      | Connected!                            |
      |                                       |
      | sql-statement                         |
      | help [tablename]                      |
      | quit                                  |
      |                                       |
      +---------------------------------------+
      SQL>
  •   编译安装pyodbc
      unzip pyodbc-3.0.7.zip
      cd pyodbc-3.0.7
      python setup.py install

  •   测试pyodbc连接
      新建一个xiaosu.py内容如下:
  • import pyodbc
    conn=pyodbc.connect("DSN=xiaosu;UID=uid;pwd=password")
    cursor=conn.cursor()
    cursor.execute("select name from sysobjects where type ='U'")
    for i in cursor:
      print i
      python xiaosu.py 如果能把数据库中的表全部打印出来,说明成功了

  
关注下面的标签,发现更多相似文章