Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS Lambda S3复制到Postgres成功,但没有';不复制数据_Python_Postgresql_Amazon Web Services_Aws Lambda - Fatal编程技术网

Python AWS Lambda S3复制到Postgres成功,但没有';不复制数据

Python AWS Lambda S3复制到Postgres成功,但没有';不复制数据,python,postgresql,amazon-web-services,aws-lambda,Python,Postgresql,Amazon Web Services,Aws Lambda,我有一个lambda函数,它使用psycopg2连接到我试图配置的Postgres RDS实例,以便它使用aws\u s3.table\u import\u from\u s3方法将数据直接从s3复制到Postgres。lambda函数表示它执行成功,但是当我轮询数据库时,实际上没有插入任何数据。这是我的密码: import psycopg2 import os def lambda_handler(event, context): print(f'Received event {st

我有一个lambda函数,它使用psycopg2连接到我试图配置的Postgres RDS实例,以便它使用
aws\u s3.table\u import\u from\u 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\u str,它会工作,但在这里不会工作,即使我已成功连接到数据库。

您只需提交即可
cursor.commit()
稍微更正一下,它应该是connection.commit(),但在其他情况下可以工作
    cursor = connection.cursor()
    print('connected successfully')

    print(query_str)
    cursor.execute(query_str)
    connection.commit() # you missed this
    print('Records added successfully')