【发布时间】:2020-04-08 22:38:00
【问题描述】:
我正在使用 jaydebeapi 连接到 Oracle 数据库。代码如下:
host = [address]
port = "1521"
sid = "ctginst1"
database = "oracle"
drivertype = "thin"
uid = [user]
pwd = [pass]
driver_class = "oracle.jdbc.OracleDriver"
driver_file = "ojdbc10.jar"
connection_string="jdbc:{}:{}@{}:{}:{}".format(database, drivertype, host, port, sid)
conn=jaydebeapi.connect(driver_class, connection_string, [uid, pwd], driver_file, )
但是这失败并给了我一个错误:
java.lang.RuntimeException: Class oracle.jdbc.OracleDriver not found
编辑: 通过在启动 JVM 时将 CLASSPATH 与 .jar 的位置一起传递,然后才尝试连接,我设法继续进行
import jpype
jpype.startJVM(jpype.getDefaultJVMPath(), '-Djava.class.path=%s' % driver_file)
现在我收到java.sql.SQLException: Invalid Oracle URL specified 错误
【问题讨论】:
-
您需要将 JDBC 驱动程序的路径作为最后一个参数传递给
connect。见pypi.org/project/JayDeBeApi/#usage。CLASSPATH环境变量不用于大多数执行 Java 的方法,JAVA_HOME\lib绝对不属于它,并且您不应该将不属于 Java 本身的随机库放在JAVA_HOME\lib中。 -
我没有完整复制最后一行,驱动的路径确实在最后。
-
那么
driver_file应该是驱动程序的完整路径(或者可能是相对于 Python 程序的路径),而不仅仅是驱动程序 jar 的名称。跨度> -
该jar也存在于程序的根目录下。我也尝试过完整的绝对路径,例如“C:\ojdbc10.jar”。
-
ojdbc10.jar适用于 Java 10。您真的安装了 Java 10 或更高版本吗? JayDeBeApi 甚至可以在 Java 10 上运行吗?