Python 3.4 - Sybase ASE 连接

Python 3.4 - Sybase ASE connection

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

你可以使用 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)

前提:安装OS对应的驱动FreeTDS。

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

从 Windows 机器连接

为了获得驱动程序 (jconn4.jar),我必须安装 Dbeaver 应用程序,并且我设置了一个连接到我想通过 python 访问的 Sybase 数据库。

下一步是测试连接并获取连接参数。 按测试连接 --> 详细信息
在弹出的 windows 中,我们拥有从 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路径添加到环境变量-->系统变量-->路径-->编辑-->新建并将路径粘贴到Javabin文件夹(C:\程序 Files\Java\jdk1.8.0_202\bin) --> 按 OK
  3. 指定JAVA_HOME环境变量;环境变量 --> 系统变量 --> 新建 --> Varialbe 名称:JAVA_HOME,Varialbe 值:C:\Program Files\Java\jdk1.8.0_202