In [3]:
import os
os.chdir("C:/Vindico/Projects/Code/Python/Course/Udacity/Full Stack Foundations/Full-Stack-Foundations-master/Lesson_1")
In [4]:
!python database_setup.py
In [5]:
!python lotsofmenus.py
In [6]:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database_setup import Restaurant, Base, MenuItem
engine = create_engine('sqlite:///restaurantmenu.db')
# Bind the engine to the metadata of the Base class so that the
# declaratives can be accessed through a DBSession instance
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
# A DBSession() instance establishes all conversations with the database
# and represents a "staging zone" for all the objects loaded into the
# database session object. Any change made against the objects in the
# session won't be persisted into the database until you call
# session.commit(). If you're not happy about the changes, you can
# revert all of them back to the last commit by calling
# session.rollback()
session = DBSession()
In [7]:
session.query(Restaurant).all()
Out[7]:
In [8]:
firstResult = session.query(Restaurant).first()
firstResult.name
Out[8]:
In [9]:
items = session.query(Restaurant).all()
for item in items:
print item.name
In [12]:
veggieBurgers = session.query(MenuItem).filter_by(name='Veggie Burger')
for veggieBurger in veggieBurgers:
print veggieBurger.id
print veggieBurger.price
print veggieBurger.restaurant.name
print "\n"
In [14]:
# one() return only the one object instead of a list of objects
UrbanVeggieBurger = session.query(MenuItem).filter_by(id=9).one()
print UrbanVeggieBurger.price
In [15]:
UrbanVeggieBurger.price = "$2.99"
session.add(UrbanVeggieBurger)
session.commit()
for veggieBurger in veggieBurgers:
print veggieBurger.id
print veggieBurger.price
print veggieBurger.restaurant.name
print "\n"
In [16]:
for veggieBurger in veggieBurgers:
if veggieBurger.price != '$2.99':
veggieBurger.price = '$2.99'
session.add(veggieBurger)
session.commit()
for veggieBurger in veggieBurgers:
print veggieBurger.id
print veggieBurger.price
print veggieBurger.restaurant.name
print "\n"
In [17]:
spinach = session.query(MenuItem).filter_by(name='Spinach Ice Cream').one()
print spinach.restaurant.name
In [18]:
session.delete(spinach)
session.commit()
spinach = session.query(MenuItem).filter_by(name='Spinach Ice Cream').one()