import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) class Base(object): def query(self, sql, placeholders): res = None cur = self.conn.cursor() try: cur.execute(sql, placeholders) res = cur.fetchall() except Exception as e: logger.error("{0}".format(e)) pass finally: cur.close() return res def update(self, sql, placeholders): rows = None cur = self.conn.cursor() try: cur.execute(sql, placeholders) self.conn.commit() rows = cur.rowcount except Exception as e: self.conn.rollback() raise Exception(e) finally: cur.close() return rows def insert(self, sql, placeholders): lastid = None cur = self.conn.cursor() try: cur.execute(sql, placeholders) if self.__class__.__name__ == 'Postgres': cur.execute('select lastval()') lastid = cur.fetchone()[0] else: lastid = cur.lastrowid self.conn.commit() except Exception as e: self.conn.rollback() raise Exception(e) finally: cur.close() return lastid def ddl(self, sql): cur = self.conn.cursor() try: if self.__class__.__name__ == 'Mysql': for r in cur.execute(sql, multi=True): pass else: cur.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() raise Exception(e) finally: cur.close() def __del__(self): #print("%s: deleted" % self.__class__.__name__) try: self.conn.close() self.conn = None except AttributeError: pass except: raise