使用 Python 从 lambda 函数执行外部 sql 脚本

问题描述 投票:0回答:0

我正在尝试执行一些外部 SQL 脚本,这些脚本包含一些 CREATE TABLES 语法,而其他脚本是一些预定义的 PL/pgSQL 函数。我正在使用 Python 3.10 和 aws-psycopg2 库在 AWS 中创建一个 Lambda 函数,它将连接到 PostgreSQL AWS 数据库并运行这些脚本。首先,我安装了库

pip install aws-psycopg2 -t .

在我的工作目录中。

我创建了一个处理函数:

import psycopg2
from psycopg2.extras import RealDictCursor
import json

# Configuration Values
endpoint_db = 'pgdatabase.xxx.amazonaws.com'
database_db = 'postgres'
username_db = 'postgres'
password_db = 'xxxxxx'
port_db = 5432

connection = psycopg2.connect(
     dbname=database_db, 
     user=username_db,
     password=password_db,
     host=endpoint_db,
     port=port_db
 )

def lambda_handler():
    cursor = connection.cursor(cursor_factory = RealDictCursor)
    cursor.execute(open("insert_clause.sql", "r").read())
    cursor.execute(open("update_table.sql", "r").read())
    # rows = cursor.fetchall()
    # json_result = json.dumps(rows)
    # print(json_result)
    # return(json_result)
    print('Done!')
    
lambda_handler()

外部 SQL 是 dvd_rental 表的一些基本命令:

UPDATE public.category SET name = 'Horror and Thriller' WHERE category_id = 11; -- update_table.sql
INSERT INTO public.copy_actor (actor_id, first_name, last_name) VALUES (201, 'Paul', 'Newman'); -- insert_clause.sql

但是,当我先在我的机器上运行 handler() 函数然后再将它部署到 AWS 上时,没有任何反应(没有表被更改)。我需要做任何额外的设置吗?

最后,如果我能让这些脚本正常工作,将它们包含在我要上传的 zip 文件中以创建 Lambda 函数是否就足够了?

谢谢!

python amazon-web-services aws-lambda psycopg2
© www.soinside.com 2019 - 2024. All rights reserved.