我试图在AWS Glue上通过Python中的jaydebeapi连接到Oracle数据库。我得到的错误是:
TypeError: Class oracle.jdbc.driver.OracleDriver is not found
我相信错误是由jaydebeapi无法找到ojdbc jar造成的,因为相同的代码在本地工作,路径是本地路径。
对于jaydebeapi,我应该在AWS上做什么来识别传递到jar的s3路径?我尝试将路径传递到Dependent JARs path字段,并在Job字段中指定--extra-jars。
这是我的代码:
import jaydebeapi
props = {
"user": "user",
"password": "password",
"oracle.jdbc.timezoneAsRegion": "false"
}
conn = jaydebeapi.connect("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:/oracle@host:port/orcl",
props,
"s3://path/to/ojdbc8-21.4.0.0.1.jar",
libs=None)
with conn.cursor() as curs:
curs.execute("CREATE SEQUENCE SCHEMA.TABLE")感谢您提前分享您的见解!
发布于 2022-04-08 12:43:51
事实证明,jaydebeapi库无法识别S3路径,因为它不是环境中的本地路径。我必须先将jar从S3下载到AWS的/tmp/目录,如下所示:
import boto3
s3 = boto3.resource('s3')
s3.Bucket('bucket_name').download_file('external-lib/jar/ojdbc8-21.4.0.0.1.jar','ojdbc8-21.4.0.0.1.jar')然后我可以在/tmp/中加载jar
import jaydebeapi
props = {
"user": "user",
"password": "password",
"oracle.jdbc.timezoneAsRegion": "false"
}
conn = jaydebeapi.connect("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:/oracle@host:port/orcl",
props,
"/tmp/ojdbc8-21.4.0.0.1.jar",
libs=None)
with conn.cursor() as curs:
curs.execute("CREATE SEQUENCE SCHEMA.TABLE")https://stackoverflow.com/questions/71329342
复制相似问题