import psycopg2 from loguru import logger try: srcConn = psycopg2.connect(database="level_monitoring_berresheim") srcConn.autocommit = False destConn = psycopg2.connect(database="udi-berresheim") destConn.autocommit = False with srcConn.cursor() as srcCur, destConn.cursor() as destCur: srcCur.execute("select time, application_name, raw_level, level, status, battery from measurement_t") for srcObj in srcCur: timestamp = srcObj[0] deviceName = srcObj[1] rawLevel = srcObj[2] level = srcObj[3] status = srcObj[4] battery = srcObj[5] logger.info(f"{timestamp=}, {deviceName=}, {rawLevel=}, {level=}, {status=}, {battery=}") destTime = timestamp destApplication = "de-hottis-level-monitoring" destDevice = "eui-a84041a2c18341d6" destAttributes = '{"ApplicationId":"de-hottis-level-monitoring", "DeviceType":"dragino-ldds75", "Status":"' + status + '","Hint": "Migrated"}' destValues = '{"Battery":{"unit":"V","label":"Battery","value":' + str(battery) + ',"variable":"Voltage"}, "Distance":{"unit":"mm","label":"Distance","variable":"Level","value":' + str(rawLevel) + '}, "CorrectedDistance":{"unit":"mm", "label":"CorrectedDistance", "variable":"Level","value":' + str(level) + '}}' logger.info(f"{destTime=}, {destApplication=}, {destDevice=}, {destAttributes=}, {destValues=}") destCur.execute("insert into measurements (time, application, device, attributes, values) values(%s, %s, %s, %s, %s)", (destTime, destApplication, destDevice, destAttributes, destValues)) destConn.commit() finally: if srcConn: srcConn.close() if destConn: destConn.close()