def update_configs(all_analyses, dbset): ''' Syncs configs from blip server with database and returns configs to pull data from. :param all_analyses: List of blip configurations :param dbset: Dictionary to connect to PostgreSQL database ''' db = DB(**dbset) db.begin() db.query('''TRUNCATE bluetooth.all_analyses_day_old; INSERT INTO bluetooth.all_analyses_day_old SELECT * FROM bluetooth.all_analyses;''' ) db.commit() analyses_pull_data = {} for report in all_analyses: report.outcomes = [outcome.__json__() for outcome in report.outcomes] report.routePoints = [ route_point.__json__() for route_point in report.routePoints ] row = dict(device_class_set_name=report.deviceClassSetName, analysis_id=report.id, minimum_point_completed=db.encode_json( report.minimumPointCompleted.__json__()), outcomes=report.outcomes, report_id=report.reportId, report_name=report.reportName, route_id=report.routeId, route_name=report.routeName, route_points=report.routePoints) #If upsert fails, log error and continue, don't add analysis to analyses to pull try: upserted = db.upsert('bluetooth.all_analyses', row, pull_data='included.pull_data') analyses_pull_data[upserted['analysis_id']] = { 'pull_data': upserted['pull_data'], 'report_name': upserted['report_name'] } except IntegrityError as err: LOGGER.error(err) db.close() analyses_to_pull = { analysis_id: analysis for (analysis_id, analysis) in analyses_pull_data.items() if analysis['pull_data'] } return analyses_to_pull
elif None in exist[0][0:4]: #update venue["id"] = exist[0][2] row["venue_id"] = exist[0][2] venue["venue_name"] = row["venue_name"] venue["venue_add_comp"] = row["venue_add_comp"] if row["venue_add_comp"] is not None: (add, lat, lon) = geocode(FormatAddress(row["venue_add_comp"])) else: add = None lat = None lon = None venue["venue_address"] = add venue["lat"] = lat venue["lon"] = lon db.upsert('city.venues', venue) print('UPSERT VENUE', row["venue_name"]) else: # do nothing row["venue_id"] = exist[0][2] # Update ODVenues Table venue = {} exist = db.query("SELECT * FROM city.od_venues where venue_address = \'" + row["venue_add_comp"] + "\'").getresult() if exist == []: exist = db.query("SELECT * FROM city.od_venues where venue_name = \'" + row["venue_name"] + "\'").getresult() if exist == []: ODID = ODID + 1