Python 3.4 - Sybase ASE 连接
Posted
技术标签:
【中文标题】Python 3.4 - Sybase ASE 连接【英文标题】:Python 3.4 - Sybase ASE connection 【发布时间】:2018-07-10 23:27:36 【问题描述】:我想用 Python 连接到 Sybase Ase 15 db。不幸的是,我找不到任何适用于 Windows 的 Python 3.4 解决方案。有人可以参考吗?我试过几个没有运气。我可以以某种方式使用 OleDb 驱动程序(dll)吗? 最近更新的免费东西会很棒。我找到了 2012 年的解决方案,但也没有工作。 谢谢。
【问题讨论】:
【参考方案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”
-
检查你的机器上是否安装了JDK(我已经安装了JDK 1.8.0_202)
--> 如果没有;安装JDK
将 java 路径添加到环境变量 --> 系统变量 --> 路径 --> 编辑 --> 新建并将路径粘贴到 Java bin 文件夹(C:\Program Files\Java\jdk1.8.0_202\ bin) --> 按确定
指定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 的网页,例如***.com/questions/31350956/… 我尝试安装它,但不清楚 Python 如何找到 Freetds 驱动程序。以上是关于Python 3.4 - Sybase ASE 连接的主要内容,如果未能解决你的问题,请参考以下文章