Beispiel #1
0
    def _move_reads(cls, readings, readings_grouped):
        cnt_ins = cnt_del = 0
        for r_grp in readings_grouped:
            Db.insert_one('Readings_grouped', r_grp)
            for r in readings:
                if not (r_grp.equip_id == r.equip_id and r_grp.meter_id == r.meter_id):
                    continue  # skip if r was not included in r_grp
                Db.insert_one('Readings_archived', Db.ReadingsArchivedRecord(
                    r.dtime, r.meter_id, r.image_id, r.temperature, r_grp.dtime))
                cnt_ins += 1

                rc = Db.exec(f'delete from Readings where dtime=? and meter_id=?', (r.dtime, r.meter_id))
                if rc != 1:
                    logger.error(
                        f'something is wrong while deleting Readings({r.dtime},meter_id={r.meter_id} rc={rc}')
                cnt_del += rc

        if cnt_ins != len(readings) or cnt_del != len(readings):
            logger.warning(f'Wrong counters: len(readings)={len(readings)}, inserted={cnt_ins}, deleted={cnt_del}')
        else:
            logger.info(f'Counters - OK:  {len(readings)} records moved from Readings to Readings_archive. ')