gpt4 book ai didi

python - 连接到 Oracle RDS

转载 作者:太空狗 更新时间:2023-10-30 02:38:28 28 4
gpt4 key购买 nike

我正在尝试使用 AWS lambda 和 python 连接到 Oracle。

这些是我遵循的步骤。 (EC2实例一切都搞定了)

  1. 下载了 instantclient-basic-linux.x64-12.2.0.1.0.zip 和
    instantclient-sdk-linux.x64-12.2.0.1.0.zip
  2. 创建了这个文件夹结构 ~/lambda/lib/
  3. 提取 zip 文件到 ~/lambda/lib/
  4. /lib64/ 中的 libaio.so.1.0.1 复制到 ~/lambda/lib/
  5. ~/lambda 中创建了 libaio.so.1.0.1 的符号链接(symbolic link)作为 libaio.so
  6. 使用 pip 在 ~/lambda 中安装 cx_Oracle
  7. ~lambda 中编写 index.py 脚本>

`

import cx_Oracle

def handler(event, context):
message = ""
cursor = None
connection = None
try:
connection = cx_Oracle.connect("USERNAME", "PASSWORD", "DOMAIN/orcl")
cursor = connection.cursor()
cursor.execute("""QUERY""")
except Exception as e:
message += " {Error in connection} " + str(e)
finally:
if cursor:
cursor.close()
if connection:
connection.close()
return {'message' : message}

`

  1. 然后使用 zip -r9 ~/upload.zip *
  2. 压缩它

在 AWS lambda 上运行代码后出现以下错误。

尝试检索错误 ORA-01804 的文本时出错

我尝试设置 ENV ORACLE_HOME=/var/task 和/var/task/lib 但没有成功

我看了下面的答案,但还没有找到帮助

Error while trying to retrieve text for error ORA-01019

Oracle with node-oracle: Error while trying to retrieve text for error ORA-01804

最佳答案

这篇文章对我使用 Lambda 函数使用 cx_Oracle 很有帮助。它按预期工作。感谢@Sayed Zainul Abideen 创建这篇文章

但我从 lambda 中得到另一个错误,指出 'cx_Oracle.DatabaseError: ORA-24454: client host name is not set'

我通过在我的 python 代码中添加以下行解决了这个问题:

import os

with open('/tmp/HOSTALIASES', 'w') as hosts_file:
hosts_file.write('{} localhost\n'.format(os.uname()[1]))

之后,我将以下环境变量添加到我的 Lambda 函数中:

HOSTALIASES = /tmp/HOSTALIASES

希望对大家有所帮助。

如果有任何与 cx_Oracle 相关的问题,请添加评论。我很乐意提供帮助,因为我费了很大劲才解决这个问题。

关于python - 连接到 Oracle RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com