Files
adii1823 48cef734e0 ch08
2021-10-28 17:39:37 +05:30

48 lines
1.1 KiB
Python

# persistence/alchemy_models.py
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import (
Column, Integer, String, ForeignKey, create_engine)
from sqlalchemy.orm import relationship
# swap these lines to work with an actual DB file
# engine = create_engine('sqlite:///example.db')
engine = create_engine('sqlite:///:memory:')
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
addresses = relationship(
'Address',
back_populates='person',
order_by='Address.email',
cascade='all, delete-orphan'
)
def __repr__(self):
return f'{self.name}(id={self.id})'
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email = Column(String)
person_id = Column(ForeignKey('person.id'))
person = relationship('Person', back_populates='addresses')
def __str__(self):
return self.email
__repr__ = __str__
Base.metadata.create_all(engine)