import psycopg2 conn = psycopg2.connect(database="ET", user="et_user", password="Serenitas1", host="debian") def with_connection(f): def with_connection_(*args, **kwargs): # or use a pool, or a factory function... try: rv = f(conn, *args, **kwargs) except Exception as e: conn.rollback() raise return rv return with_connection_ @with_connection def query_db(conn, sqlstr, params=None, one=True): c = conn.cursor() if params: c.execute(sqlstr, params) else: c.execute(sqlstr) if one: return c.fetchone() else: return c.fetchall() c.close()