Python无法连接到Oracle数据库,不支持close_fds

2024-05-15 09:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小脚本,试图连接到运行oracle数据库(11g)的服务器。在

import os
import sys
import jpype
import jaydebeapi

if("JAVA_HOME" not in os.environ):
    os.environ["JAVA_HOME"] = "c:\Program Files\Java\jdk1.8.0_45"

ODBC_DRIVER = os.path.join(os.path.dirname(os.path.abspath(__file__)), "ojdbc6.jar")

print("\tPYTHON VERSION", sys.version)
print("\tJAVA_HOME", os.environ["JAVA_HOME"])
print("\tDEFAULT JVM PATH", jpype.getDefaultJVMPath())
print("\tODBC_DRIVER", ODBC_DRIVER)

try:
    jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path={}".format(ODBC_DRIVER))
    conn = jaydebeapi.connect("oracle.jdbc.driver.OracleDriver",
                             ["jdbc:oracle:thin//192.168.10.33:1521", "<user>", "<passw>"],
                              ODBC_DRIVER)
except Exception as e:
    print(e)
    sys.exit(-1)

sys.exit(0)

引发异常的输出:

^{pr2}$

作为参考,我主要使用连接到oracle数据库的小教程。他们的代码基本上是一样的。在

通过寻找解决方案,我发现python应该支持2.6.x版本中的close_fds

我不知道从哪儿开始找。在

有关jpype和jaydebaapi的更多信息:

JayDeBeApi3 (1.3)
JPype1-py3 (0.5.5.2)

两者都是通过pip安装的。在


Tags: pathimport数据库homeosdriversysenviron
1条回答
网友
1楼 · 发布于 2024-05-15 09:42:31

我建议您使用python>;=2.7.x(这在您的情况下很好,因为您使用的是更高版本)。 使用JayDeBeApi 0.2.0(最新版本)推荐的jpype10.5.7。 另外,由于您是自己启动JVM的,所以不需要在connect语句中指定第三个参数(driver)。或者可以注释掉startjvm并保持connect语句的原样。Jpype也会这样做(即,如果您在connect语句中将驱动程序jar指定为第三个参数,则为startjvm)。在

相关问题 更多 >