On Sun, 2013-02-24 at 13:34:10 +0100, robert rottermann wrote:
> The following tables
> tblPerson, tblFlag
> are linked using the association table tblPerson_has_Flag.
> 
> this works fine if I explicitly define columns to be part of foreign
> keys as shown in tblPerson_has_Flag below.
> what I wanted to do, but failed was:
> in tblPerson_has_Flag insted of marking the columns to be part of a
> fk to have the following construct
>     __table_args__ = (
>         sa.ForeignKeyConstraint(
>             ['tblPerson_id'], [u'tblPerson.id'],
>             ['tblFlag_id'], [u'tblFlag.id'],
>         ),
>         sa.PrimaryKeyConstraint(u'tblPerson_id', u'tblFlag_id'), {}
>     )

If I understand correctly, you can't use ForeignKeyConstraint, because
it is used to create a single foreign key (which can be a composite
foreign key if it consists of multiple columns), while in your case
there are two separate foreign keys pointing to two different tables.

Define your association object like this:

  class tblPerson_has_Flag(Base):
      __tablename__ = 'tblPerson_has_Flag'
      tblPerson_id = sa.Column(
          mysql.INTEGER(display_width=11),
          sa.ForeignKey('tblPerson.id'),
          primary_key=True, autoincrement=False
      )
      tblFlag_id = sa.Column(
          mysql.INTEGER(display_width=11),
          sa.ForeignKey('tblFlag.id'),
          primary_key=True, autoincrement=False
      )

This will create a composite primary key constraint and two separate
foreign key constraints.

-- 
Audrius Kažukauskas
http://neutrino.lt/

Attachment: pgpmldaVSb3TD.pgp
Description: PGP signature

Reply via email to