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的主要内容,如果未能解决你的问题,请参考以下文章

text 在GCP上连接到VM

PHP 无法在 CentOS 7 上连接到 PostgreSQL

如何在不同的端口上连接到 MySQL

在 Android Studio 上连接到 GitLab 存储库

如何在 Windows server 2012 上连接到端口 8080 wildfly?

在 azure sql 上连接到数据库的问题