【问题标题】:How can I connect to Postgres using JayDeBeApi? It doesn't find the org.postgresql.Driver如何使用 JayDeBeApi 连接到 Postgres?它没有找到 org.postgresql.Driver
【发布时间】:2018-12-27 21:26:49
【问题描述】:

我必须连接到 DB2 以提取一些数据并创建 Tableau 数据提取,为此我想使用 JayDeBeApi,并对其进行测试我试图将自己连接到一个小型 Postgres 数据库,但我无法与它建立正确的连接,因为它一直向我抛出以下错误:

jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class org.postgresql.Driver not found

我目前的实现是这样的

import jaydebeapi as jdbc

sql = 'Select * From world.city'
postgresql_class = 'org.postgresql.Driver'
postgresql_jdbc_path = 'path/to/postgresql-42.2.4.jar'
postgresql_url = 'jdbc:postgresql://host:port/database'
postgresql_user = 'user'
postgresql_pw = 'pass'

conn = jdbc.connect(postgresql_class, 
                    [postgresql_url, postgresql_user, postgresql_pw], 
                    postgresql_jdbc_path)

curs = conn.cursor()

curs.execute('SELECT * FROM csv_reports LIMIT 2')
curs.fetchall()
curs.close()
conn.close()

有谁知道我必须指定什么类才能完成这项工作?或者我如何指定 jdbc 路径以便 JayDeBeApi 可以使用该类或其他东西

【问题讨论】:

  • 或许可以试试postgresql_jdbc_path = ['path/to/postgresql-42.2.4.jar']
  • 另外,我不认为postgresql_url 应该在用户名和密码的列表中。更像jdbc.connect(postgresql_class, postgresql_url, [postgresql_user, postgresql_pw], postgresql_jdbc_path)
  • 列表postgresql_url 是问题所在,非常感谢

标签: database postgresql jdbc jaydebeapi


【解决方案1】:

根据JayDeBeApi documentation

connect 的第一个参数是 Java 驱动程序类的名称。第二个参数是一个带有 JDBC 连接 URL 的字符串。第三,您可以选择提供一个由用户和密码组成的序列,或者一个包含参数的字典,这些参数在内部作为属性传递给 Java DriverManager.getConnection 方法。详见DriverManager类的Javadoc。

因此,您不应该在列表中包含用户名和密码的连接 URL;它应该单独作为第二个参数:

jdbc.connect(postgresql_class, 
             postgresql_url, 
             [postgresql_user, postgresql_pw], 
             postgresql_jdbc_path)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2017-08-28
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2017-01-26
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多