In [7]:
import os
import sys
from sqlalchemy import Column, ForeignKey, Integer, String, Float, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy import create_engine

In [5]:
Base = declarative_base()

class Agency(Base):
    __tablename__ = 'agency'
    
    # Simpler to not use composite PK, because composite FKs are a pain
    uid = Column(String(50), primary_key=True)
    ag_id = Column(String(50), nullable=False)
    ag_type = Column(String(20), nullable=False)
    ag_brand = Column(String(50), nullable=False)
    ag_name = Column(String(100), nullable=False)
    ag_bcode = Column(String(50), nullable=False)
    ag_addr = Column(String(200), nullable=False)
    ag_city = Column(String(50), nullable=False)
    ag_state = Column(String(3), nullable=False)
    ag_zip = Column(Integer, nullable=False) 
    ag_dist = Column(Float, nullable=False)
    ag_lat = Column(Float, nullable=False)
    ag_lon = Column(Float, nullable=False)

    
class Price(Base):
    __tablename__ = 'prices'
    
    uid = Column(Integer, primary_key=True, autoincrement=True)
       
    agency_id = Column(String(50), ForeignKey('agency.uid'))
    # All hail our SQLAlchemy overlords
    agency = relationship("Agency",back_populates="prices")    
    
    pickup = Column(String(20), nullable=False)
    dropoff = Column(String(20), nullable=False)
    time = Column(String(20), nullable=False)
    querytime = Column(DateTime, nullable=False)
    
    car_econ = Column(Float)
    car_comp = Column(Float)
    car_int = Column(Float)
    car_std = Column(Float)
    car_full = Column(Float)
    car_prem = Column(Float)
    car_lux = Column(Float)
    car_intsuv = Column(Float)
    car_stdsuv = Column(Float)
    car_fullsuv = Column(Float)
    car_premsuv = Column(Float)
    car_mv = Column(Float)  
    car_fv = Column(Float)
    
# reciprocal link to make things nicer
Agency.prices = relationship("Price", order_by=Price.querytime,
                          back_populates="agency")
    
# in-memory database
engine = create_engine('sqlite://')
 
# Create all tables in the engine. 
Base.metadata.create_all(engine)

In [10]:
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()

In [ ]: