Python 3.7 在 MAC 上连接到 HSQLDB
Posted
技术标签:
【中文标题】Python 3.7 在 MAC 上连接到 HSQLDB【英文标题】:Python 3.7 connecting to HSQLDB on MAC 【发布时间】:2019-08-07 01:46:33 【问题描述】:尝试使用 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:找不到类 org.hsqldb.jdbcDriver
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 需要一个类路径集呢?以及如何为 HSQLDB for python 设置类路径?
【问题讨论】:
【参考方案1】:当启动 JPype 时,它要么从环境变量 CLASS_PATH
获取类路径,要么从使用 jpype.startJVM(classpath="...")
命令定义的手动指定类路径获取类路径。如果您不必直接从 JPype 调用此命令,它可能是 jaydebeapi api 的一部分。
我假设 R 在内部定义了自己的类路径,因此从 JVM 看到的内容可能会有所不同。这可能包括选择了不同的 JVM、包含不同位置的类路径,或者在某些情况下,如果驱动程序具有本机部分(例如 MS SQLServer),则库路径也可能不正确。为了让 JDBC 驱动程序加载需要找到的所有部分,包括 jar、支持 jar 和本机共享库。如果所有其他方法都失败,请手动尝试使用Class.forname
加载 java 类。它可以为您提供进一步的诊断,以确定缺少哪一部分。
【讨论】:
以上是关于Python 3.7 在 MAC 上连接到 HSQLDB的主要内容,如果未能解决你的问题,请参考以下文章
PHP 无法在 CentOS 7 上连接到 PostgreSQL
在 Android Studio 上连接到 GitLab 存储库