Nou*_*lid 3 python oracle amazon-web-services aws-glue
我正在研究 AWS Glue Python Shell。我想将 python shell 与 Oracle 连接。我成功安装了 psycopg2 和 mysql 库,但是当我尝试使用 cx_Oracle 连接 Oracle 时,我已成功安装该库,但遇到错误
数据库错误:DPI-1047:无法找到 64 位 Oracle 客户端库:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”
我尝试过以下事情
我已经so
从 S3 下载了文件并将其与代码文件并行放置在 lib 文件夹中
我已经使用 os.environ 设置了 LD_LIBRARY_PATH、ORACLE_HOME
我正在使用以下代码
import boto3
import os
import sys
import site
from setuptools.command import easy_install
s3 = boto3.client('s3')
dir_path = os.path.dirname(os.path.realpath(__file__))
#os.path.dirname(sys.modules['__main__'].__file__)
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "cx_Oracle"] )
importlib.reload(site)
import cx_Oracle
conn_str = u'{username}/{password}@{host}:{port}/{sid}'
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute(u'select * from hr.countries')
for row in c:
print(row[0], "-", row[1])
conn.close()
print('hello I am here');
Run Code Online (Sandbox Code Playgroud)
我应该能够在 awsglue python shell 上与 oracle 连接
小智 5
正如在回复中已经提到的那样。LD_LIBRARY_PATH
需要在脚本启动之前设置。因此,避免使用的一种方法LD_LIBRARY_PATH
是rpath
在so
文件中进行设置。以下是所需的步骤。
您将需要更新rpath
您的so
文件。这可以使用包来完成patchelf
。
还请将您的文件包含libaio.so.1
在so
您可能通过运行生成的文件中sudo apt-get install libaio1
安装中patchelf
sudo apt-get update
sudo apt-get install patchelf
更新rpath
到您的 lib 目录
patchelf --set-rpath <absolute_path_to_library_dir> libclntsh.so
so
将更新后的文件上传rpath
到您的glue env lib目录。
然后您可以在脚本中加载该库。
from ctypes import *
cdll.LoadLibrary('<absolute_path_to_library_dir>/libclntsh.so')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4307 次 |
最近记录: |