美文网首页
在MAC上使⽤FreeTDS、 UnixODBC、pyodbc连

在MAC上使⽤FreeTDS、 UnixODBC、pyodbc连

作者: 程序_影子 | 来源:发表于2022-11-13 10:40 被阅读0次

    提要:项目需要使用python去连接操作Sybase,由于我的电脑是Mac,需要先配置相关环境才能进一步操作它。

    安装UnixODBC

    brew install unixodbc
    

    安装配置FreeTDS

    下载

    wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.13.tar.gz
    

    安装

    tar zxvf freetds-1.3.13.tar.gz cd freetds-1.3.13 ./configure --prefix=/usr/local/Cellar/freetds --with-unixodbc=/usr/local --with-tdsver=5.0 make && make install
    

    要记住安装位置/usr/local/Cellar/freetds 安装版本5.0 这两个是可以根据你的需要进行修改的。

    配置freetds.conf

    [NBDB] 
        host = IP 地址
        port = 端⼝号
        tds version = 5.0
        client charset = UTF-8
    

    []内填写⾃⼰需要连接的实例名,host和port填写⾃⼰服务的ip和端⼝

    测试链接

    /usr/local/Cellar/freetds/bin/tsql -S NBDB -U xxx -P xxx
    

    注意权限问题,我这里只要root账户可以操作链接测试

    返回如下,代表链接成功

    locale is "zh_CN.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    1> select @@version 
    2> go 
    @@version 
    17.0.10.6175
     (1 row affected)
    

    配置odbc.ini和odbcinst.ini

    找到文件的位置

    odbcinst -j
    

    返回如下

    unixODBC 2.3.9
    DRIVERS............: /usr/local/etc/odbcinst.ini
    SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
    FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
    USER DATA SOURCES..: /Users/wangying/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8
    

    根据返回的位置,找到odbcinst.ini和odbc.ini,进行配置,配置如下:

    # odbcinst.ini 
    [SQL Anywhere 17] 
    Description = SAP SQL Anywhere 17 ODBC Driver 
    Driver = /usr/local/Cellar/freetds/lib/libtdsodbc.so 
    UsageCount = 1
    
     # obdc.ini 
    [nbdbdsn] 
    Driver = SQL Anywhere 17 
    ServerName = NBDB 
    Database = NBDB
    

    python链接Sybase

    安装pyodbc

    pip install pyodbc
    

    使用如下:

    import pyodbc 
    conn=pyodbc.connect("DSN=nbdbdsn;UID=uid;pwd=password") 
    cursor=conn.cursor() 
    #输出数据库中所有表名 
    cursor.execute("select name from sysobjects where type ='U'") 
    for i in cursor:
     print(i)
    

    相关文章

      网友评论

          本文标题:在MAC上使⽤FreeTDS、 UnixODBC、pyodbc连

          本文链接:https://www.haomeiwen.com/subject/vmllxdtx.html