我有這個嘗試連接到運行Oracle數據庫(11g)的服務器的小腳本。Python無法連接到Oracle數據庫,不支持close_fds
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)
與拋出的異常輸出:
PYTHON VERSION 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]
JAVA_HOME c:\Program Files\Java\jdk1.8.0_45
DEFAULT JVM PATH c:\Program Files\Java\jdk1.8.0_45\jre\bin\server\jvm.dll
ODBC_DRIVER d:\path\to\ojdbc6.jar
close_fds is not supported on Windows platforms if you redirect stdin/stdout/stderr
正如我主要用於其連接到oracle數據庫小教程的參考。他們的代碼基本上是一樣的。
通過查找我發現蟒蛇應該從版本2.6.x的
支持close_fds的解決方案我不知道從哪裏開始尋找。在jpype和jaydebaapi
的更多信息:
JayDeBeApi3 (1.3)
JPype1-py3 (0.5.5.2)
無論是通過pip
安裝。
爲什麼不使用更新版本的[JPype1](https://pypi.python.org/pypi/JPype1/)和[JayDeBeApi](https://pypi.python.org/pypi/JayDeBeApi /)? – bastian