python - AWS Lambda S3 复制到 Postgres 成功但不复制数据

标签 python postgresql amazon-web-services aws-lambda

我有一个 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/

相关文章:

amazon-web-services - 通过 IP 地址的 EC2 实例区域

python - 遇到提示时遇到问题

python - 使用 C++ 流序列化数字会导致 Mac 上的 boost.python 崩溃

sql - 喜欢你的用户 (EXISTS) 但你没有与之聊天 (NOT EXISTS)

SQL:搜索字符串集

sql - pl/pgsql 函数中动态 SQL 的语法错误

amazon-web-services - 如何从 EventBridge 规则定义步骤函数执行名称?

amazon-web-services - 'aws ecr get-login'如何跨区域?

python - django 2 中的迁移错误;属性错误 : 'str' object has no attribute 'decode'

python - 如何在 python thrift 服务器中获取客户端的 IP