千家信息网

linux + pyodbc + freetds + uni

发表于:2024-10-01 作者:千家信息网编辑
千家信息网最后更新 2024年10月01日,操作系统是 RHEL6.2安装unixodbc以及依赖包yum -y install gcc gcc-c++ unixodbc unixODBC-devel python-devel安装 freetd
千家信息网最后更新 2024年10月01日linux + pyodbc + freetds + uni

操作系统是 RHEL6.2

  1. 安装unixodbc以及依赖包

    yum -y install gcc gcc-c++ unixodbc unixODBC-devel python-devel

  2. 安装 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

  3. 配置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>

  4. 配置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>

  5. 编译安装pyodbc

    unzip pyodbc-3.0.7.zip

    cd pyodbc-3.0.7

    python setup.py install

  6. 测试pyodbc连接

    新建一个xiaosu.py内容如下:

  7. import pyodbcconn=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 如果能把数据库中的表全部打印出来,说明成功了

0