我正在尝试执行一些外部 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 函数是否就足够了?
谢谢!