我在 python 3 中使用 jaydebeapi 来运行查询。我需要同时连接到 Netezza 和 MySql。我的代码分别运行这两个查询没有任何问题,但是当我一个接一个运行时,第二个查询出错。我关闭了第一个查询(Netezza)的连接和游标,但仍然出现以下错误:
jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class com.mysql.jdbc.Driver not found
我在 python 3 中使用 jaydebeapi 来运行查询。我需要同时连接到 Netezza 和 MySql。我的代码分别运行这两个查询没有任何问题,但是当我一个接一个运行时,第二个查询出错。我关闭了第一个查询(Netezza)的连接和游标,但仍然出现以下错误:
jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class com.mysql.jdbc.Driver not found
问题不在于您需要关闭一个连接才能使用另一个连接。问题是,当jaydebeapi
用于jpype
通信时,您只有一次机会提供您可能使用的所有必要 JAR 文件路径。这可以在_jdbc_connect_jpype
函数中看到,here。
修复方法是传递您在程序执行期间可能使用的所有JAR 文件路径。
我假设您没有在 Jython 上运行,而是
jaydebeapi
自动安装jpype
以促进 Python 到 Java 的通信。这是“开箱即用”情况的最可能情况。如果您使用的是 Jython,请告诉我。
Yu 需要添加 Class Mysql Driver 和 JAR 文件路径,例如带有 IMB jar 的 DB2:
conn = jaydebeapi.connect("com.ibm.as400.access.AS400JDBCDriver", "url", ["user", "password"], "C:\lib\jt400.jar",)