【问题标题】:Python 3 - jaydebeapi - Connect to an Oracle DatabasePython 3 - jaydebeapi - 连接到 Oracle 数据库
【发布时间】:2018-10-01 06:26:32
【问题描述】:

我最近下载了 jaydebeapi 库,但无法连接到远程 Oracle 数据库。我正在执行以下操作:

import jaydebeapi as j
j.connect('oracle.jdbc.driver.OracleDriver', ['jdbc:oracle:thin:@myhost:port:instance_name', "user", "pass"], "/path/to/ojdbc7.jar")

在这种情况下,我收到错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified

虽然 jar 文件位于指定的文件夹中。

如果我省略了 ojdbc7.jar 的路径,我会收到:

import jaydebeapi as j
    j.connect('oracle.jdbc.driver.OracleDriver', ['jdbc:oracle:thin:@myhost:port:instance_name', "user", "pass"])

TypeError                                 Traceback (most recent call last)
<ipython-input-164-db519a221754> in <module>()
----> 1 j.connect('oracle.jdbc.driver.OracleDriver', 'jdbc:oracle:thin:@cdwprdmi-scan.int-app.stockex.com:1522:mdwprdmi1',)

L:\pyzo2015a\lib\site-packages\jaydebeapi\__init__.py in connect(jclassname, driver_args, jars, libs)
     61 
     62         gateway = java_gateway.JavaGateway.launch_gateway(
---> 63             port=25333, classpath=classpath, javaopts=javaopts, die_on_exit=True)
     64 
     65         java_gateway.java_import(gateway.jvm, 'java.sql.DriverManager')

L:\pyzo2015a\lib\site-packages\py4j\java_gateway.py in launch_gateway(cls, port, jarpath, classpath, javaopts, die_on_exit, redirect_stdout, redirect_stderr, daemonize_redirect, java_path, create_new_process_group)
   1977             daemonize_redirect=daemonize_redirect, java_path=java_path,
   1978             create_new_process_group=create_new_process_group)
-> 1979         gateway = JavaGateway(gateway_parameters=GatewayParameters(port=_port))
   1980         return gateway
   1981 

L:\pyzo2015a\lib\site-packages\py4j\java_gateway.py in launch_gateway(port, jarpath, classpath, javaopts, die_on_exit, redirect_stdout, redirect_stderr, daemonize_redirect, java_path, create_new_process_group)
    282     # Launch the server in a subprocess.
    283     classpath = os.pathsep.join((jarpath, classpath))
--> 284     command = [java_path, "-classpath", classpath] + javaopts +     285               ["py4j.GatewayServer"]
    286     if die_on_exit:

TypeError: sequence item 1: expected str instance, NoneType found

我该如何解决这里的问题? 谢谢,

【问题讨论】:

    标签: python jaydebeapi


    【解决方案1】:

    不确定错误,但以下格式在 Windows 64 位中对我有用

    conn = jaydebeapi.connect('oracle.jdbc.driver.OracleDriver', ['jdbc:oracle:thin:@hostname:1521:orcl', "username", "password"],"C:\\Users\\user\\Documents\\Drivers\\ojdbc6.jar")
    

    【讨论】:

      【解决方案2】:

      问题是因为jaydebeapi 使用命令java 来执行一个java jar。不幸的是,我使用的计算机只接受 java 的绝对路径,所以我需要在调用连接方法 jaydebeapi 时引用它。 谢谢,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-26
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 2020-02-06
        相关资源
        最近更新 更多