import psycopg2 from psycopg2.extras import DictCursor from psycopg2 import IntegrityError def dbconn(dbname): if dbname == 'etdb': dbname = 'ET' user_name = 'et_user' else: user_name = dbname[:-2] + '_user' return psycopg2.connect(database=dbname, user=user_name, host="debian", cursor_factory=DictCursor) def with_connection(dbname): def decorator(f): conn = dbconn(dbname) def with_connection_(*args, **kwargs): # or use a pool, or a factory function... try: rv = f(conn, *args, **kwargs) except Exception as e: print(e) conn.rollback() else: return rv return with_connection_ return decorator @with_connection('etdb') def query_db(conn, sqlstr, params=None, one=True): with conn.cursor() as c: if params: c.execute(sqlstr, params) else: c.execute(sqlstr) conn.commit() r = c.fetchone() if one else c.fetchall() return r