适用于 Netezza 和 MySQL 的 jaydebeapi

Posted

技术标签:

【中文标题】适用于 Netezza 和 MySQL 的 jaydebeapi【英文标题】:jaydebeapi for both Netezza and MySQL 【发布时间】:2018-04-03 17:55:50 【问题描述】:

我在 python 3 中使用 jaydebeapi 来运行查询。 我需要同时连接到 Netezza 和 mysql。我的代码分别运行这两个查询没有任何问题,但是当我一个接一个运行时,它会为第二个查询提供错误。 我关闭了第一个查询(Netezza)的连接和游标,但仍然出现以下错误:

jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class com.mysql.jdbc.Driver not found

【问题讨论】:

请分享您的代码。 【参考方案1】:

问题不在于您需要关闭一个连接才能使用另一个连接。问题是,当jaydebeapi 使用jpype 进行通信时,您只有一次机会提供您可能使用的所有必要的JAR 文件路径。这可以在_jdbc_connect_jpype 函数here 中看到。

解决方法是传递您在程序执行期间可能使用的所有 JAR 文件路径。

我假设您没有在 Jython 上运行,而是在 jaydebeapi 自动安装jpype方便Python转Java 沟通。这是“出局”最有可能发生的情况 box”的情况。如果您使用的是 Jython,请告诉我。

【讨论】:

有什么办法吗?我需要经常在 Netezza 和 Mysql 之间切换 调用连接函数时只需传入两个 JAR 路径。那应该可以解决它。 如果您愿意,请分享您对 Netezza 和 MySQL 的 connect 语句,我可以向您展示您应该使用的代码。【参考方案2】:

你需要添加 Class Mysql Driver 和 JAR 文件路径,例如 DB2 和 IMB jar:

conn = jaydebeapi.connect("com.ibm.as400.access.AS400JDBCDriver", “网址”, [“用户密码”], "C:\lib\jt400.jar",)

【讨论】:

以上是关于适用于 Netezza 和 MySQL 的 jaydebeapi的主要内容,如果未能解决你的问题,请参考以下文章

Netezza 中默认 DUAL 表的名称是啥

Netezza CI/CD 工具

如何在 NETEZZA 中实现 CROSS APPLY?

在将 nzload 与 netezza 一起使用时,我们如何定义多个空值?

JOIN 替代 SELECT 子查询

netezza 中的周末日期