From 285729767ceab50e97d2d6425e6d51769fe7508c Mon Sep 17 00:00:00 2001 From: Christopher Bohn <bohn@unl.edu> Date: Wed, 30 Mar 2022 08:46:33 -0500 Subject: [PATCH] Revert "added many-to-many without extra payload" (wrong branch) This reverts commit 9c17bb0bda0052a3f2e222cd7bb8b08ef1affde0. --- diner.py | 6 +----- diner_installer.py | 22 +++++++++------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/diner.py b/diner.py index cfd8ddf..c0ad745 100644 --- a/diner.py +++ b/diner.py @@ -15,7 +15,6 @@ class Menu(Persisted): __tablename__ = 'menus' menu_id = Column(Integer, primary_key=True) # primary keys default to auto_increment name = Column(String(256), nullable=False) # nullable is the default - items = relationship('Item', uselist=True, back_populates='menu') class Item(Persisted): @@ -25,22 +24,19 @@ class Item(Persisted): menu_id = Column(Integer, ForeignKey('menus.menu_id', ondelete='CASCADE'), nullable=False) name = Column(String(256), nullable=False) price = Column(Integer, nullable=False) - menu = relationship('Menu', back_populates='items') - orders = relationship('Order', uselist=True, secondary='order_items', back_populates='items') - # # # If there isn't any extra payload in the join table, there's no need to explicitly mention it class Order(Persisted): __tablename__ = 'orders' order_id = Column(Integer, primary_key=True) timestamp = Column(DateTime) - items = relationship('Item', uselist=True, secondary='order_items', back_populates='orders') class OrderItem(Persisted): __tablename__ = 'order_items' order_id = Column(Integer, ForeignKey('orders.order_id', ondelete='CASCADE'), primary_key=True) item_id = Column(Integer, ForeignKey('items.item_id', ondelete='CASCADE'), primary_key=True) + amount = Column(Integer) class DinerDatabase(object): diff --git a/diner_installer.py b/diner_installer.py index f397337..cbca811 100644 --- a/diner_installer.py +++ b/diner_installer.py @@ -15,7 +15,7 @@ def add_starter_data(session): orange_juice = Item(menu=beverage_menu, name='Orange Juice', price=149) short_stack = Item(menu=food_menu, name='Pancakes', price=399) regular_pancakes = Item(menu=food_menu, name='Pancakes', price=499) - first_order = Order(items=[orange_juice]) + first_order = Order(order_items=[OrderItem(item=orange_juice, amount=2)]) session.add(beverage_menu) session.add(food_menu) session.add(orange_juice) @@ -26,21 +26,17 @@ def add_starter_data(session): def main(): try: - url = DinerDatabase.construct_mysql_url('localhost', 33060, 'diner', 'root', 'cse1208') + url = DinerDatabase.construct_mysql_url('localhost', 3306, 'diner', 'root', 'cse1208') diner_database = DinerDatabase(url) diner_database.ensure_tables_exist() print('Tables created.') - session = diner_database.create_session() - if already_has_data(session): - print('Not creating records because some already exist.') - else: - add_starter_data(session) - session.commit() - print('Records created.') - the_order: Order = session.query(Order).filter(Order.order_id == 1).one() - print([item.name for item in the_order.items]) - orange_juice: Item = session.query(Item).filter(Item.name == 'Orange Juice').one() - print([order.order_id for order in orange_juice.orders]) + # session = diner_database.create_session() + # if already_has_data(session): + # print('Not creating records because some already exist.') + # else: + # add_starter_data(session) + # session.commit() + # print('Records created.') except SQLAlchemyError as exception: print('Database setup failed!', file=stderr) print(f'Cause: {exception}', file=stderr) -- GitLab