Christian Schwanke wrote:
> metadata = MetaData()
> table_a = Table('table_a', metadata,
> Column('id', Integer(), primary_key=True),
> Column('name', String(20), nullable=True),
> )
>
> table_b = Table('table_b', metadata,
> Column('a_id', Integer(), nullable=False, primary_key=True),
> Column('id', Integer(), nullable=False, primary_key=True),
> Column('name', String(20), nullable=True),
> ForeignKeyConstraint(['a_id'], ['table_a.id'],
> ondelete='CASCADE'),
> )
>
> table_c = Table('table_c', metadata,
> Column('a_id', Integer(), nullable=False, primary_key=True),
> Column('b_id', Integer(), nullable=False, primary_key=True),
> Column('id', Integer(), primary_key=True),
> Column('name', String(20), nullable=True),
> ForeignKeyConstraint(['a_id', 'b_id'], ['table_b.a_id',
> 'table_b.id'], ondelete='CASCADE'),
> )
> # Mapping
> mapper(ItemA, table_a, properties={'b': relation(ItemB, backref="a",
> cascade="all, delete-orphan")})
> mapper(ItemB, table_b, properties={'c': relation(ItemC, backref="b",
> cascade="all, delete-orphan")})
> mapper(ItemC, table_c)
relation ItemC.b takes care of the assignment of table_c.b_id, but there
is nothing here for SQLA to know about table_c.a_id. You need another
relation() on ItemC which expresses this, and you need to assign itemA1 to
ItemC explicitly, independently of the ItemB stuff.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---