def persistMeasurement(self, dt, depth, lat, lon, var, value): '''Call all of the create_ methods to properly persist this measurement in STOQS''' try: parm, _ = m.Parameter.objects.using( self.dbAlias).get_or_create(name=var) except Exception as e: print(( "ERROR: *** Could not get_or_create name = '%s'. See details below. ***\n" % var)) print(e) traceback.print_exc(file=sys.stdout) print("Continuing on with processing messages...") ##sys.exit(-1) meas = self.createMeasurement(dt, depth, lat, lon) mp = m.MeasuredParameter(measurement=meas, parameter=parm, datavalue=str(value)) try: mp.save(using=self.dbAlias) except IntegrityError as e: logger.error( "WARNING: Probably a duplicate measurement that could not be added to the DB. Skipping it.\n" ) logger.error(e) else: print(("saved %s = %f at %s, %f, %f, %f" % (parm, value, dt, depth, lat, lon))) return
def persistMeasurement(self, dt, depth, lat, lon, var, value): '''Call all of the create_ methods to properly persist this measurement in STOQS''' try: (parm, created) = m.Parameter.objects.using(self.dbAlias).get_or_create(name = var) except Exception, e: print "ERROR: *** Could not get_or_create name = '%s'. See details below. ***\n" % var print e traceback.print_exc(file = sys.stdout) print "Continuing on with processing messages..." ##sys.exit(-1) meas = self.createMeasurement(dt, depth, lat, lon) mp = m.MeasuredParameter(measurement = meas, parameter = parm, datavalue = str(value)) try: mp.save(using=self.dbAlias) except IntegrityError, e: logger.error("WARNING: Probably a duplicate measurement that could not be added to the DB. Skipping it.\n", var) logger.error(e) else: print "saved %s = %f at %s, %f, %f, %f" % (parm, value, dt, depth, lat, lon) return def persistSample(self, dt, depth, lat, lon, var, value): '''Call all of the create_ methods to properly persist this sample in STOQS''' sample = self.createSample(dt, depth, lat, lon, value)
def load_measurement(self, lat, lon, depth, mtime, parmNameValues): ''' Load the data values recorded for each loaction @parmNameValues is a list of 2-tuples of (ParameterName, Value) measured at the time and location specified by @lat decimal degrees @lon decimal degrees @mtime Python datetime.datetime object @depth in meters ''' mt = None try: mt = self.createMeasurement(mtime=mtime, depth=depth, lat=lat, lon=lon) logger.info("measurement._state.db = %s", mt._state.db) if depth < self.mindepth: self.mindepth = depth if depth > self.maxdepth: self.maxdepth = depth except SkipRecord as e: logger.info(e) except Exception as e: logger.error(e) sys.exit(-1) else: logger.info( "longitude = %s, latitude = %s, mtime = %s, depth = %s", lon, lat, mtime, depth) for pn, value in parmNameValues: logger.info("pn = %s", pn) logger.info("parameter._state.db = %s", self.getParameterByName(pn)._state.db) mp = m.MeasuredParameter(measurement=mt, parameter=self.getParameterByName(pn), datavalue=value) try: mp.save(using=self.dbAlias) except ParameterNotFound: logger.error("Unable to locate parameter for %s, skipping", pn) continue except Exception as e: logger.error('Exception %s. Skipping this record.', e) logger.error("Bad value (id=%(id)s) for %(pn)s = %(value)s", { 'pn': pn, 'value': value, 'id': mp.pk }) continue else: self.loaded += 1 logger.info( "Inserted value (id=%(id)s) for %(pn)s = %(value)s", { 'pn': pn, 'value': value, 'id': mp.pk }) self.parmCount[pn] += 1 if self.getParameterByName(pn) in self.parameterCount: self.parameterCount[self.getParameterByName(pn)] += 1 else: self.parameterCount[self.getParameterByName(pn)] = 0
self.mindepth = depth if depth > self.maxdepth: self.maxdepth = depth except SkipRecord, e: logger.info(e) except Exception, e: logger.error(e) sys.exit(-1) else: logger.info("longitude = %s, latitude = %s, time = %s, depth = %s", lon, lat, time, depth) for pn,value in parmNameValues: logger.info("pn = %s", pn) logger.info("parameter._state.db = %s", self.getParameterByName(pn)._state.db) mp = m.MeasuredParameter(measurement = mt, parameter = self.getParameterByName(pn), datavalue = value) try: mp.save(using=self.dbAlias) except ParameterNotFound: logger.error("Unable to locate parameter for %s, skipping", pn) continue except Exception, e: logger.error('Exception %s. Skipping this record.', e) logger.error("Bad value (id=%(id)s) for %(pn)s = %(value)s", {'pn': pn, 'value': value, 'id': mp.pk}) continue else: self.loaded += 1 logger.info("Inserted value (id=%(id)s) for %(pn)s = %(value)s", {'pn': pn, 'value': value, 'id': mp.pk})