def lose_it_upload(request): session = Session() # TODO: duplicate detection input_file = request.POST['file'].file reader = LoseItDataReader(input_file) existing_for_date = {} ignored = [] for entry in reader: existing_food = session.query(Food).filter_by(name=entry.name).all() food = None if len(existing_food) == 0: food = Food(entry.name) session.add(food) else: food = existing_food[0] if not entry.date in existing_for_date: existing_entries = session.query(FoodEntry).filter_by(date=entry.date).all() existing_for_date[entry.date] = existing_entries if existing_for_date[entry.date]: ignored.append(entry) else: new_entry = FoodEntry(food, entry.calories, entry.date) session.add(new_entry) session.commit() if ignored: return {'title': 'Existing Data Not Imported', 'ignored': ignored} else: return HTTPFound('/food_entry/lose_it_upload_form')
def add_job(self, valid_datetime, job_type, details): session = Session() new_job = Job(timestamp_when_valid=valid_datetime, job_type=job_type, details=details) session.add(new_job) session.commit() session.close()
def food_tag_add(request): name = request.params['name'] session = Session() new_tag = FoodTag(name) session.add(new_tag) session.commit() return HTTPFound('/food_tag/list')
def init_result(): session = Session() entry = Session(Result).filter(Result.id == 1).one_or_none() # 如数据不存在,就新增一条为1的空数据 if not entry: session.add(Result(modules="", total_time="", data="", dev="")) session.commit() else: pass session.close()
def commit_entry(self, staged_entry): session = Session() indicator_values = {} for indicator in self.indicators_metadata: value_location = self.location_engine.convert_postcode( staged_entry.postcode, self.indicators_metadata[indicator]['resolution']) previous_value_entry = session.query(IndicatorValue)\ .filter(IndicatorValue.indicator == indicator, IndicatorValue.location == value_location, IndicatorValue.date < staged_entry.date)\ .order_by(IndicatorValue.date.desc())\ .first() following_value_entry = session.query(IndicatorValue)\ .filter(IndicatorValue.indicator == indicator, IndicatorValue.location == value_location, IndicatorValue.date > staged_entry.date)\ .order_by(IndicatorValue.date)\ .first() if previous_value_entry is None and following_value_entry is None: value = None indicator_date = None elif following_value_entry is None \ or abs((previous_value_entry.date - staged_entry.date).days) \ < abs((following_value_entry.date - staged_entry.date).days): value = previous_value_entry.value indicator_date = previous_value_entry.date else: value = following_value_entry.value indicator_date = following_value_entry.date # Check if value falls within frequency range if indicator_date is not None and (abs(staged_entry.date - indicator_date)).days\ > (FREQUENCY_DAY_COUNTS[self.indicators_metadata[indicator]['frequency']] / 2): value = None indicator_values[indicator] = value new_entry = TargetEntry( entry_id=staged_entry.entry_id, sale_id=staged_entry.sale_id, date=staged_entry.date, value=staged_entry.value, PDD_type=staged_entry.PDD_type, postcode=staged_entry.postcode, town_or_city=staged_entry.town_or_city, district=staged_entry.district, county=staged_entry.county, new_property_flag=staged_entry.new_property_flag, property_type=staged_entry.property_type, tenure_type=staged_entry.tenure_type) for indicator in indicator_values: setattr(new_entry, indicator, indicator_values[indicator]) session.add(new_entry) session.commit() session.close()
def add_new_model(self, settings): new_model_name = settings['name'] new_model = Model(settings) self.models[new_model_name] = new_model self.save_model(new_model_name) new_model_record = ModelEntry(name=settings['name'], type=settings['type'], dataset=settings['dataset'], state='untrained') session = Session() session.add(new_model_record) session.commit() session.close()
def main(): engine = create_engine('postgresql://[email protected]/my_metrics') Base.metadata.create_all(engine) Session.configure(bind=engine) session = Session() food_entries = session.query(FoodEntry).order_by(FoodEntry.date) for entry in food_entries: food_name = entry.name existing_food = session.query(Food).filter_by(name=food_name).all() if len(existing_food) == 0: new_food = Food(food_name) session.add(new_food) session.commit()
def food_entry_add(request): name = request.params['name'] calories = int(request.params['calories']) day = date.today() - timedelta(int(request.params['days_ago'])) session = Session() existing_food = session.query(Food).filter_by(name=food_name).all() food = None if len(existing_food) == 0: food = Food(food_name) session.add(food) else: food = existing_food[0] new_entry = FoodEntry(food, calories, day) session.add(new_entry) session.commit() return HTTPFound('/food_entry/add_form')
) user3 = User( email='*****@*****.**', username='******', password='******' ) event1 = Event(name='Event1', description='Description1', event_date='2020-12-11', organizer=user1, users=[user2, user3]) event2 = Event(name='Event2', description='Description2', event_date='2020-12-12', organizer=user2, users=[user1, user3]) event3 = Event(name='Event3', description='Description3', event_date='2020-12-13', organizer=user1) session.add(event1) session.add(event2) session.add(event3) session.add(user1) session.add(user2) session.add(user3) session.commit()