やりたいこと
- PythonからPostgreSQLのストアドプロシージャを実行したい。
- 具体的にはAWS Lambdaからストアドを実行したい。
実行環境
- AWS Lambda
- Python3.6
- psycopg2
- PostgreSQL9.6.6
実現方法
psycopg2
のcallproc
メソッドを使う。
実装例
import sys import logging import rds_config import psycopg2 from botocore.exceptions import ClientError try: conn = psycopg2.connect( host=rds_host, database=rds_database, port=rds_port, user=rds_user, password=rds_password ) except psycopg2.DatabaseError: logger.error( "ERROR: Unexpected error: " "Could not connect to PostgreSQL instance." ) sys.exit() def lambda_handler(event, context): try: with conn.cursor() as cur: # RDSで作成したストアドプロシージャの実行 cur.callproc('hoge_function') conn.commit() except ClientError as e: logger.error(e.response['Error']['Message']) return "success!"