Open bilred opened 8 months ago
import json import psycopg2 from psycopg2 import pool from urllib.parse import urlparse import os import sys def lambda_handler(event, context): user = event['request']['userAttributes'] print('userAttributes') print(user) user_display_name = user['name'] user_email = user['email'] user_handle = user['preferred_username'] user_cognito_id = user['sub'] params = [ user_display_name, user_email, user_handle, user_cognito_id ] print('entered-try') print(params) sql = return_string_sql(*params) conn = None conn = create_connection() execute_query(conn, sql, *params) if conn: conn.close() print('Database connection closed') def create_connection(): """ Create a connection to the PostgreSQL database """ print('CONNECTION_URL ----') connection_url = os.getenv("CONNECTION_URL") print(connection_url) url_parts = urlparse(connection_url) # Create a connection pool connection_pool = pool.SimpleConnectionPool( minconn=1, maxconn=10, user=url_parts.username, password=url_parts.password, host=url_parts.hostname, port=url_parts.port, database=url_parts.path.lstrip('/'), ) try: with connection_pool.getconn() as conn: print("Connection to the database successful!") except (Exception, psycopg2.DatabaseError) as e: print_sql_err(e) return conn def return_string_sql(*params): sql = f""" INSERT INTO public.users ( display_name, handle, email, cognito_user_id ) VALUES({params[0]},{params[1]},{params[2]},{params[3]}) """ print('SQL Statement ----') print(sql) return sql def execute_query(conn, query, *params): """ Execute a SQL query on the connected database """ with conn.cursor() as cursor: try: cursor.execute(query, *params) conn.commit() print("Query executed successfully!") except (Exception, psycopg2.DatabaseError) as e: print_sql_err(e) finally: cursor.close() def print_sql_err(err): # get details about the exception err_type, traceback = sys.exc_info() # get the line number when exception occured line_num = traceback.tb_lineno # print the connect() error print ("\npsycopg ERROR:", err, "on line number:", line_num) print ("\npsycopg traceback:", traceback, "-- type:", err_type)
updat lambda function with connection pool and Error handler