you're using homologues to link Protein_seed to PDB.   so the two  
foreign keys should be between the tables named "Proteins_seed" and  
"PDB", not "Proteins_putative", which seems to be otherwise  
unmentioned here.


On Feb 1, 2009, at 11:57 AM, Piotrek Byzia wrote:

>
> Hi,
>
> I'm a fresh user of SQLA, and this is my first attempt to use it.
>
> Based on the official tutorial example I created a many to many
> relation between two tables, but I have some issues with getting it
> working. It returns error "Could not determine join condition between
> parent/child tables on relation Protein_seed.pdb_entry.  Specify a
> 'primaryjoin' expression.  If this is a many-to-many relation,
> 'secondaryjoin' is needed as well." I don't know how to define
> secondary key, while my association table "homologues" is not
> declarative and doesn't have it's own primary key. Can anybody help,
> please?
>
> meta = MetaData()
> Base = declarative_base(metadata=meta)
>
> homologues = Table('Homologues', meta,
>    Column('protein_seed_id', Integer, ForeignKey
> ('Proteins_seed.id')),
>        Column('protein_putative_id', Integer, ForeignKey
> ('Proteins_putative.id'))
> )
>
> class PDB(Base):
>    __tablename__ = 'PDB'
>
>    id = Column(Integer, primary_key=True)
>    name = Column(String, nullable=False, unique=True)
>    chain = Column(String, nullable=False)
>
>    def __init__(self, name, chain):
>        self.name = name
>        self.chain = chain
>
>    def __repr__(self):
>        return "<PDB('%s', '%s')>" % (self.name, self.chain)
>
> class Protein_seed(Base):
>    __tablename__ = 'Proteins_seed'
>
>    id = Column(Integer, primary_key=True)
>    name = Column(String, nullable=False)
>    sequence = Column(String, nullable=False)
>    length = Column(Integer, nullable=False)
>    alignment = Column(String, nullable=False)
>    pdb_id = Column(Integer, ForeignKey('PDB.id'))
>
>    # many-to-one Protein_seed * 1 PDB
>    pdb_entry = relation('PDB', secondary=homologues, backref=backref
> ('Proteins_seed'),
>        primaryjoin=pdb_id == PDB.id)
>
>    def __init__(self, name, sequence, length, alignment):
>        self.name = name
>        self.sequence = sequence
>        self.length = length
>        self.alignment = alignment
>
>    def __repr__(self):
>       return "<Protein_seed('%s', '%s', '%s', '%s')>" % (self.name,
> self.sequence, self.length, self.alignment)
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to