def move_data(dbset): try: db = DB(**dbset) db.begin() query = db.query("SELECT bluetooth.move_raw_data();") if query.getresult()[0][0] != 1: db.rollback() raise DatabaseError( 'bluetooth.move_raw_data did not complete successfully') query = db.query("TRUNCATE bluetooth.raw_data;") query = db.query("SELECT king_pilot.load_bt_data();") if query.getresult()[0][0] != 1: db.rollback() raise DatabaseError( 'king_pilot.load_bt_data did not complete successfully') db.query( 'DELETE FROM king_pilot.daily_raw_bt WHERE measured_timestamp < now()::DATE;' ) db.commit() except DatabaseError as dberr: LOGGER.error(dberr) db.rollback() except IntegrityError: LOGGER.critical( 'Moving data failed due to violation of a constraint. Data will have to be moved manually' ) finally: db.close()
def singleton_side_effect(unused1, unused2): # this function replaces dbconn.querySingleton(conn, sql), conditionally raising exception if len(db_singleton_side_effect_list) > 0: if db_singleton_side_effect_list[0] == "DatabaseError": raise DatabaseError("mock exception") return db_singleton_side_effect_list[0] return None