В SQLAlchemy мы можем объявить таблицы и их отношения следующим образом:
user = Table(
'users', metadata,
Column('id', Integer, primary_key=True))
address = Table(
'adresses', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('user.id')))
class User(object): pass
class Address(object): pass
session.mapper(User, user, properties=dict(
'address' = relation(Address, backref='user', cascade="all")))
(Обратите внимание на каскад в строке выше.)
Однако мы также можем использовать альтернативный сокращенный стиль , называемый декларативный стиль , в котором мы можем выразить одно и то же в меньшем количестве строк кода, исключив отношения mapper () :
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
class Adress(Base):
__tablename__ = 'adresses'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id')))
Но если мы используем этот декларативный стиль, есть ли альтернативный способ определения каскадных отношений?