Skip to content
Snippets Groups Projects
Commit 37ba36f3 authored by Shruti Bolman's avatar Shruti Bolman
Browse files

updated imports and datetime

parent 28572976
Branches main
No related tags found
No related merge requests found
from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.orm import declarative_base, sessionmaker, relationship
# In Python, unlike many languages, it is possible to create new classes at
......@@ -8,13 +7,14 @@ from sqlalchemy.orm import sessionmaker, relationship
# class that we can use for objects that we want SQLAlchemy to persist in a
# database. We then store that class in variable named Persisted; effectively,
# we make a new class called Persisted.
Persisted = declarative_base() # pylint: disable=invalid-name
Persisted = declarative_base()
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):
......@@ -24,12 +24,15 @@ 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')
order_items = relationship('OrderItem', uselist=True, back_populates='item')
class Order(Persisted):
__tablename__ = 'orders'
order_id = Column(Integer, primary_key=True)
timestamp = Column(DateTime)
order_items = relationship('OrderItem', uselist=True, back_populates='order')
class OrderItem(Persisted):
......@@ -37,6 +40,8 @@ class OrderItem(Persisted):
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)
item = relationship('Item', back_populates='order_items')
order = relationship('Order', back_populates='order_items')
class DinerDatabase(object):
......
from datetime import datetime
from sys import stderr
from sqlalchemy.exc import SQLAlchemyError
......@@ -15,7 +16,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(order_items=[OrderItem(item=orange_juice, amount=2)])
first_order = Order(order_items=[OrderItem(item=orange_juice, amount=2)], timestamp=datetime.now())
session.add(beverage_menu)
session.add(food_menu)
session.add(orange_juice)
......@@ -26,17 +27,17 @@ def add_starter_data(session):
def main():
try:
url = DinerDatabase.construct_mysql_url('localhost', 3306, 'diner', 'root', 'cse1208')
url = DinerDatabase.construct_mysql_url('localhost', 3306, 'diner', 'root', 'mysqlpassword')
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.')
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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment