【问题标题】:Python 3.4 - Sybase ASE connectionPython 3.4 - Sybase ASE 连接
【发布时间】:2018-07-10 23:27:36
【问题描述】:

我想用 Python 连接到 Sybase Ase 15 db。不幸的是,我找不到任何适用于 Windows 的 Python 3.4 解决方案。有人可以参考吗?我试过几个没有运气。我可以以某种方式使用 OleDb 驱动程序(dll)吗? 最近更新的免费东西会很棒。我找到了 2012 年的解决方案,但也没有工作。 谢谢。

【问题讨论】:

    标签: python database-connection python-3.4 sap-ase


    【解决方案1】:

    首先我要指出以下几点:我们无法仅使用 Python 连接到 Sybase ASE 数据库;我们必须使用能够管理连接的外部二进制文件(称为驱动程序)。就我而言,我使用 "jconn4.jar" 驱动程序从 Windows 机器连接。

    为了获得驱动程序 (jconn4.jar),我必须安装 Dbeaver 应用程序。我建立了与我想通过 python 访问的 Sybase 数据库的连接。

    下一步是测试连接并获取连接参数。 按测试连接 --> 详情
    在弹出的窗口中,我们拥有从 python 配置 Sybase 连接所需的所有详细信息。

    import jaydebeapi
    
    server = "<server IP>"
    username = "<username>"
    password = "<password>"
    database = "<datamase/schema>"
    port = <port>
    jdbc_driver = r'..\DBeaverData\drivers\drivers\sybase\jconnect\jconn4.jar'  // this is the driver path; the path is obtained from the details window
    
    conn = jaydebeapi.connect('com.sybase.jdbc4.jdbc.SybDriver', f'jdbc:sybase:Tds:{server}:{port}/{database}', {'user': username, 'password': password},
                              jdbc_driver)
    cursor = conn.cursor()
    cursor.execute("select * from my_table")
    result = cursor.fetchall()
    print(result)
    

    如果出现错误,说明缺少“JAVA_HOME”

    1. 检查你的机器上是否安装了JDK(我已经安装了JDK 1.8.0_202) --> 如果没有;安装JDK
    2. 将 java 路径添加到环境变量 --> 系统变量 --> 路径 --> 编辑 --> 新建并将路径粘贴到 Java bin 文件夹(C:\Program Files\Java\jdk1.8.0_202\ bin) --> 按确定
    3. 指定JAVA_HOME环境变量;环境变量 --> 系统变量 --> 新建 --> Varialbe 名称:JAVA_HOME,Varialbe 值:C:\Program Files\Java\jdk1.8.0_202

    【讨论】:

      【解决方案2】:

      你可以使用pyodbc:

      import pyodbc
      
      DbConnection = pyodbc.connect('DRIVER=freetds;SERVER=%s;PORT=%s;UID=%s;PWD=%s;DATABASE=%s;TDS _Version=5.0;' % (self.ServerAddress, self.ServerPort,
      'aselogin', 'loginpwd', DefaultDb),unicode_results=True,autocommit=True)
      

      先决条件:安装与您的操作系统对应的驱动程序 FreeTDS。

      【讨论】:

      • 我安装了pyodbc,设置了db的设置。它说没有指定默认驱动程序。我尝试安装 freetds 还没有运气。 (Windows 所以它不是太简单)。谢谢。
      • 你是对的。此配置需要有驱动程序 Freetds。在 Solaris 上,我们安装了包 CSWfreetds。它来自freetds.org。我更新了我的答案。
      • 对 Windows 有任何想法吗?不幸的是,我无法成功。最接近的是原始 Sybase 包。 Sybase.connect(...) 它说 ct_connect():目录服务层:内部目录控制层错误:未找到请求的服务器名称。手动我可以使用相同的设置连接到此服务器。
      • freetds for windows:sourceforge.net/projects/freetdswindows。 Freetds 可用于 Sybase ASE 和 MS SQL。还有更多关于 MS SQL 的网页,例如stackoverflow.com/questions/31350956/…
      • 我尝试安装它,但不清楚 Python 如何找到 Freetds 驱动程序。
      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2017-10-17
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多