【发布时间】:2020-09-04 07:06:12
【问题描述】:
我有一个需求,我需要连接到 oracle 数据库并从 db 表中获取一些数据。因此,由于我是 aws lambda 的初学者,所以我从下面的示例开始。
import cx_Oracle
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info('begin lambda_handler')
dsn = cx_Oracle.makedsn("hostname", "1521", "sid")
con = cx_Oracle.connect("user_id", "password", dsn)
cur = con.cursor()
#logger.info('username: ' + username)
#logger.info('host: ' + host)
sql = """SELECT COUNT(*) AS TEST_COUNT FROM DUAL"""
cur.execute(sql)
columns = [i[0] for i in cur.description]
rows = [dict(zip(columns, row)) for row in cur]
logger.info(rows)
con.close()
logger.info('end lambda_handler')
return "Successfully connected to oracle."
我在 linux 中创建了下面的结构来创建部署包。
父目录
-lib(在这个库下我放置了所有的oracle即时客户端文件)
-cx_oracle 文件
lmbda_function.py
在 aws lambda 上部署包并对其进行测试后,出现以下错误。
[错误] 数据库错误:DPI-1047:找不到 64 位 Oracle 客户端库:“/var/task/lib/libclntsh.so:文件太短”。请参阅https://oracle.github.io/odpi/doc/installation.html#linux 寻求帮助 回溯(最近一次通话最后): 文件“/var/task/lambda_function.py”,第 29 行,在 lambda_handler 中
请有人帮我实现这一点,如果有任何更好的选择可以从 aws lambda 连接到 oracle,而不是分享。
【问题讨论】:
标签: python-3.x oracle aws-lambda