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

updated imports and datetime

parent 28572976
No related branches found
No related tags found
No related merge requests found
from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import declarative_base, sessionmaker, relationship
from sqlalchemy.orm import sessionmaker, relationship
# In Python, unlike many languages, it is possible to create new classes at # In Python, unlike many languages, it is possible to create new classes at
...@@ -8,13 +7,14 @@ from sqlalchemy.orm import sessionmaker, relationship ...@@ -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 # 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, # database. We then store that class in variable named Persisted; effectively,
# we make a new class called Persisted. # we make a new class called Persisted.
Persisted = declarative_base() # pylint: disable=invalid-name Persisted = declarative_base()
class Menu(Persisted): class Menu(Persisted):
__tablename__ = 'menus' __tablename__ = 'menus'
menu_id = Column(Integer, primary_key=True) # primary keys default to auto_increment menu_id = Column(Integer, primary_key=True) # primary keys default to auto_increment
name = Column(String(256), nullable=False) # nullable is the default name = Column(String(256), nullable=False) # nullable is the default
items = relationship('Item', uselist=True, back_populates='menu')
class Item(Persisted): class Item(Persisted):
...@@ -24,12 +24,15 @@ class Item(Persisted): ...@@ -24,12 +24,15 @@ class Item(Persisted):
menu_id = Column(Integer, ForeignKey('menus.menu_id', ondelete='CASCADE'), nullable=False) menu_id = Column(Integer, ForeignKey('menus.menu_id', ondelete='CASCADE'), nullable=False)
name = Column(String(256), nullable=False) name = Column(String(256), nullable=False)
price = Column(Integer, 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): class Order(Persisted):
__tablename__ = 'orders' __tablename__ = 'orders'
order_id = Column(Integer, primary_key=True) order_id = Column(Integer, primary_key=True)
timestamp = Column(DateTime) timestamp = Column(DateTime)
order_items = relationship('OrderItem', uselist=True, back_populates='order')
class OrderItem(Persisted): class OrderItem(Persisted):
...@@ -37,6 +40,8 @@ class OrderItem(Persisted): ...@@ -37,6 +40,8 @@ class OrderItem(Persisted):
order_id = Column(Integer, ForeignKey('orders.order_id', ondelete='CASCADE'), primary_key=True) 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) item_id = Column(Integer, ForeignKey('items.item_id', ondelete='CASCADE'), primary_key=True)
amount = Column(Integer) amount = Column(Integer)
item = relationship('Item', back_populates='order_items')
order = relationship('Order', back_populates='order_items')
class DinerDatabase(object): class DinerDatabase(object):
......
from datetime import datetime
from sys import stderr from sys import stderr
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
...@@ -15,7 +16,7 @@ def add_starter_data(session): ...@@ -15,7 +16,7 @@ def add_starter_data(session):
orange_juice = Item(menu=beverage_menu, name='Orange Juice', price=149) orange_juice = Item(menu=beverage_menu, name='Orange Juice', price=149)
short_stack = Item(menu=food_menu, name='Pancakes', price=399) short_stack = Item(menu=food_menu, name='Pancakes', price=399)
regular_pancakes = Item(menu=food_menu, name='Pancakes', price=499) 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(beverage_menu)
session.add(food_menu) session.add(food_menu)
session.add(orange_juice) session.add(orange_juice)
...@@ -26,17 +27,17 @@ def add_starter_data(session): ...@@ -26,17 +27,17 @@ def add_starter_data(session):
def main(): def main():
try: 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 = DinerDatabase(url)
diner_database.ensure_tables_exist() diner_database.ensure_tables_exist()
print('Tables created.') print('Tables created.')
# session = diner_database.create_session() session = diner_database.create_session()
# if already_has_data(session): if already_has_data(session):
# print('Not creating records because some already exist.') print('Not creating records because some already exist.')
# else: else:
# add_starter_data(session) add_starter_data(session)
# session.commit() session.commit()
# print('Records created.') print('Records created.')
except SQLAlchemyError as exception: except SQLAlchemyError as exception:
print('Database setup failed!', file=stderr) print('Database setup failed!', file=stderr)
print(f'Cause: {exception}', 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