remove the "secondary" argument from proteins_seed to PDB, the "homologues" table has no relevance to that relation().
On Feb 1, 2009, at 1:56 PM, Piotrek Byzia wrote: > > My fault, I haven't included Proteins_putative, PDB is just another > table.. > But anyway, the problem is with definition of many-to-many relaction() > in Protein_seed. > > class Protein_putative(Base): > __tablename__ = 'Proteins_putative' > > id = Column(Integer, primary_key=True) > name = Column(String, nullable=False, unique=True) > primary_accession_number = Column(String, nullable=False) > description = Column(String) > sequence = Column(String, nullable=False) > length = Column(Integer, nullable=False) > alignment = Column(String, nullable=False) > > def __init__(self, name, primary_accession_number, description, > sequence, length, alignment): > self.name = name > self.primary_accession_number = primary_accession_number > self.description = description > self.sequence = sequence > self.length = length > self.alignment = alignment > > def __repr__(self): > return "<Protein_putative('%s', '%s')>" % (self.name, > self.primary_accession_number) > > > On Feb 1, 6:18 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: >> 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 -~----------~----~----~----~------~----~------~--~---