我必须连接到DB2以提取一些数据并创建Tableau Data Extract,为此,我想使用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可以使用该类之类的东西
答案 0 :(得分:0)
connect
的第一个参数是Java驱动程序类的名称。第二个参数是带有JDBC连接URL的字符串。第三,您可以选择提供一个由用户和密码组成的序列,或者提供一个包含参数的字典,这些参数在内部作为属性传递给JavaDriverManager.getConnection
方法。有关详细信息,请参见DriverManager
类的Javadoc。
因此,您不应在用户名和密码中包括连接URL。它应该单独作为第二个参数:
jdbc.connect(postgresql_class,
postgresql_url,
[postgresql_user, postgresql_pw],
postgresql_jdbc_path)