> 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.

Reply via email to