def insert_style(style_list) : for style in style_list : # query for beers and make the relationship beer_inventory = db.session.query(Beer).filter(Beer.scrape_style_id == style.get("id")).all() if style.get("name") is not None: string_name = unicodedata.normalize('NFKD', style.get("name")).encode('ascii', 'ignore') else : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue if style.get("description") is not None : string_desc = unicodedata.normalize('NFKD', style.get("description")).encode('ascii','ignore') else : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue if style.get("ibuMin") is None or style.get("ibuMax") is None or style.get("abvMin") is None or style.get("abvMax") is None : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue # add the data and commit s = Style(name=string_name, description=string_desc, ibu_min=style.get("ibuMin"), ibu_max=style.get("ibuMax"), abv_min=style.get("abvMin"), abv_max=style.get("abvMax")) s.beers = beer_inventory db.session.add(s) db.session.commit() if style.get("name") is not None: logger.info("style: " + style.get("name") + " populated") db.session.commit()
def test_relationship_2(self) : app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' db.drop_all() db.create_all() coors_light = Beer(name='Coors Light', description="Taste's like urine.", is_organic="N", abv=11.1, ibu=30) blue_moon = Beer(name='Blue Moon', description="Pretty good.", is_organic="N", abv=6.3, ibu=50) light_lager = Style(name="Light Hail Lager") self.assertEqual(light_lager.beers, []) light_lager.beers = [coors_light, blue_moon] db.session.add(blue_moon) db.session.add(coors_light) db.session.add(light_lager) self.assertEqual(light_lager.beers[0], coors_light) self.assertEqual(light_lager.beers[1], blue_moon) self.assertEqual(light_lager.style_id, blue_moon.style_id) db.session.commit()