import psycopg2 from psycopg2.extras import RealDictCursor from contextlib import contextmanager import config @contextmanager def get_cursor(): conn = psycopg2.connect( host=config.DB_AUTH_HOST, port=config.DB_AUTH_PORT, dbname=config.DB_AUTH_NAME, user=config.DB_AUTH_USER, password=config.DB_AUTH_PASSWORD, options="-c timezone=UTC", ) try: cur = conn.cursor(cursor_factory=RealDictCursor) yield cur conn.commit() except Exception: conn.rollback() raise finally: cur.close() conn.close()