On Feb 9, 2011, at 4:34 AM, Enrico Morelli wrote:
> Dear all,
>
> I've to create an association object where the many-to-many relation has
> to be created with only one table:
>
> atominfo_table = Table('atom_info', metadata,
> Column('id', types.Integer, primary_key=True),
> Column('number', types.Integer, nullable=False),
> Column('coord_x', types.Unicode(15), nullable=False),
> Column('coord_y', types.Unicode(15), nullable=False),
> Column('coord_z', types.Unicode(15), nullable=False),
> Column('residue_id', types.Integer,
> ForeignKey('residue_info.id'),primary_key=True),
> Column('periodic_id', types.Integer,ForeignKey('periodic_glos.id'),
> primary_key=True), )
>
> atom_atom_table = Table('atom_atom', metadata,
> Column('atom1_id', types.Integer,
> ForeignKey('atom_info.id'),primary_key=True),
> Column('atom2_id', types.Integer, ForeignKey('atom_info.id'),
> primary_key=True),
> Column('interaction_type', types.Unicode(50),nullable=False),
> Column('distance', types.Unicode(10),nullable=False), )
>
> Is it possible? If yes how can create the mapper?
> The following attempt give me the error:
> Could not determine join condition between parent/child tables on
> relationship AtomInfo.atom1. Specify a 'primaryjoin' expression. If
> 'secondary' is present, 'secondaryjoin' is needed as well.
>
> mapper(AtomInfo, atominfo_table,
> properties={
> 'residue': relationship(ResidueInfo, backref='atominfo'),
> 'periodic': relationship(Periodic, backref='atominfo'),
> 'atom1': relationship(AtomAtom)
> })
>
> mapper(AtomAtom, atom_atom_table,
> properties={
> 'atom2': relationship(AtomInfo)
> })
Ideally you'd be using ForeignKeyConstraint to specify a composite foreign key.
Otherwise it looks like theres multiple foreign keys between them, that's why
it doesn't know how to join.
http://www.sqlalchemy.org/docs/core/schema.html#defining-foreign-keys
>
>
> Thanks
> --
> -------------------------------------------------------------------
> (o_
> (o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
> (/)_ V_/_
> +------------------------------------------------------------------+
> | ENRICO MORELLI | email: [email protected] |
> | * * * * | phone: +39 055 4574269 |
> | University of Florence | fax : +39 055 4574253 |
> | CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
> +------------------------------------------------------------------+
>
> --
> 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.
>
--
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.