> On Dec 11, 2014, at 11:53 AM, dewey <[email protected]> wrote: > > There are many good examples of implementing many to many via a join table. > > I'm not sure if I'm being lazy, or just using this as an opportunity to learn > more sqlalchemy, but I'm trying to implement a shortcut from long a go > > I know this approach requires a much slower query but these are tiny tables > and they are cached at application startup, so I'm not concerned with > performance. > > I have two tables: > > class SuperType(Base): > ''' > creates groups of type recs > ''' > __tablename__ = 'stp_super_type' > stp_name = Column(String(50), nullable=False) > stp_bit = Column(Integer, nullable=False, unique=True) # holds a > unique bit-val for each record (2,4,8, 16,32, 64, etc) > > types = relationship("Type", > order_by="asc(Type.typ_order)", > > primaryjoin="SuperType.stp_bit.op('&')(Type.typ_stp_bits)==SuperType.stp_bit", > backref="stype" > ) > > class Type(Base): > ''' > types for many other recs throughout the system > ''' > __tablename__ = 'typ_type' > typ_name = Column(String(50), nullable=False) > typ_stp_bits = Column(Integer, nullable=False) # > ForeignKey(SuperType.stp_bit) > typ_order = Column(Integer, nullable=False) > > > "id" is the pkey for each table and is generated in the Base > > typ_stp_bits would hold a value such as 38 (2 or 4 or 32) to indicate it is > a child (applicable within) those THREE super-type classes.... > Hope that makes sense > > How do I properly specify this relationship? > I'm getting a complaint that there is no foreign key defined on the > Type/child tableā¦.
this is not a many-to-many because there are only two tables joined directly. you want to use the guidelines at http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#creating-custom-foreign-conditions <http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#creating-custom-foreign-conditions> for the not-really-foreign-key foreign key. > > Thanks, > D > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/sqlalchemy > <http://groups.google.com/group/sqlalchemy>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
