我有一个 lambda 函数,它使用 psycopg2 连接到我尝试配置的 Postgres RDS 实例,以便它使用 aws_s3.table_import_from_s3
方法将数据直接从 S3 复制到 Postgres。 lambda 函数表示它执行成功,但是当我轮询数据库时,实际上没有插入任何数据。这是我的代码:
import psycopg2
import os
def lambda_handler(event, context):
print(f'Received event {str(event)}')
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
query_str = f"""
select aws_s3.table_import_from_s3(
'printer_mailings',
'',
'(format csv)',
'{bucket}',
'{key}',
'us-east-1')
;"""
try:
connection = psycopg2.connect(user = os.environ["user"],
password = os.environ["pwd"],
host = os.environ["host"],
port = os.environ["port"],
database = os.environ["db"])
cursor = connection.cursor()
print('connected successfully')
print(query_str)
cursor.execute(query_str)
print('Records added successfully')
except (Exception, psycopg2.Error) as error :
print ("Error while connecting to PostgreSQL", error)
finally:
#closing database connection.
if(connection):
cursor.close()
connection.close()
print("PostgreSQL connection is closed")
知道为什么这行不通吗?如果我在 PSQL 中运行 query_str 它会起作用,但即使我已成功连接到数据库,它也不会在这里。
最佳答案
cursor = connection.cursor()
print('connected successfully')
print(query_str)
cursor.execute(query_str)
connection.commit() # you missed this
print('Records added successfully')
关于python - AWS Lambda S3 复制到 Postgres 成功但不复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59375844/