java - Python 3.7 连接到 MAC 上的 HSQLDB

标签 java python r hsqldb

尝试使用 python 3.7、jaydebeapi 和 jpype 连接到 HSQLDB Java 数据库。我尝试了以下方法

import jaydebeapi

UserName = "SA"
Password = ""
Java_Class = "org.hsqldb.jdbcDriver"
HSQL_Driver_Path = "/Hsqldb/driver/hsqldb.jar"
Database = "jdbc:hsqldb:/Hsqldb/database/OneDatabase"
jaydebeapi.connect(Java_Class,Database,[UserName,Password],jars=HSQL_Driver_Path)

它导致了以下错误

java.lang.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class org.hsqldb.jdbcDriver not found

Google 指出这是一个类路径错误,我需要添加一个类路径来修复。

编辑:设置详细信息:Mac、anaconda、python 3.7

我使用 RJDBC 库在 R 中尝试了类似的操作,并且能够正常连接。

PathDriver = "/Hsqldb/driver/hsqldb.jar"
JDBCDriver = "org.hsqldb.jdbcDriver"
drv <- JDBC(JDBCDriver,PathDriver)

# Connect to Database
DatabaseP <- "jdbc:hsqldb:file:////Hsqldb/database/OneDatabase"
Con <- dbConnect(drv,DatabaseP,"SA","")

编辑:设置详细信息:Mac、R、Rstudio

我将 R 与 Anaconda 分开,因为 Anaconda 阻止了我想要使用的许多库。

这可能是苹果与橘子的区别,但是为什么当 R 执行该函数时 Python 需要一个类路径集呢?如何为Python的HSQLDB设置类路径?

最佳答案

启动 JPype 时,它​​要么从环境变量 CLASS_PATH 中获取类路径,要么从使用 jpype.startJVM(classpath="...") 定义的手动指定的类路径中获取类路径。 > 命令。如果您不必直接从 JPype 调用该命令,则该命令可能是 jaydebeapi api 的一部分。

我假设 R 在内部定义了自己的类路径,因此从 JVM 中看到的内容可能会有所不同。这可能包括选择不同的 JVM、包含不同位置的类路径,或者在某些情况下,如果驱动程序具有 native 部分(例如 MS SQLServer),则库路径也可能不正确。为了让 JDBC 驱动程序加载所有需要找到的部分,包括 jar、支持 jar 和 native 共享库。如果所有其他方法都失败,请尝试使用 Class.forname 手动加载 java 类。它可以为您提供有关缺少哪一 block 的进一步诊断。

关于java - Python 3.7 连接到 MAC 上的 HSQLDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57385964/

相关文章:

python - 无法在 Win7 上将 python.exe 设置为 *.py 脚本

r - 如何在列表的每一行中随机选择行和列

r - 使用循环在 Markdown 中参数化作者和标题

java - 在主要 Activity 中膨胀 fragment 会带来错误

java - 什么是 NullPointerException,我该如何解决?

java - 在饼图中显示百分比值

java - 如何创建具有根据唯一键生成的属性的对象

python - 在 C++ 中嵌入 python 的编码

python - 替换 Pandas 中棘手的列名称

image - 向图像添加颜色图例