1

我必须连接到 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 可以使用该类或其他东西

4

1 回答 1

1

根据JayDeBeApi 文档

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

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

jdbc.connect(postgresql_class, 
             postgresql_url, 
             [postgresql_user, postgresql_pw], 
             postgresql_jdbc_path)
于 2018-07-19T18:21:15.490 回答