If it's simply a matter of sequence of how code is organized:
1. Define Merchants table and mappers
2. Define Deals table and mappers
3. Add relations to Merchant
All of this can be in separate files if needed; just import right
definitions where needed.
metadata = MetaData()
merchants = Table('merchants', metadata,
Column('id', Integer, primary_key=True),
Column('name', String)
)
class Merchant(object):
pass
mapper(Merchant, merchants)
deals = Table('deals', metadata,
Column('id', Integer, primary_key=True),
Column('merch_id', Integer, ForeignKey('merchants.id')),
Column('deal_status', String(10))
)
class Deal(object):
pass
mapper(Deal, deals)
Merchant.all_deals = relation(Deal, backref='merchant')
Merchant.active_deals = relation(Deal, primaryjoin=
and_(merchants.c.id==deals.c.merch_id,
deals.c.deal_status=='active'))
This is one advantage of using declarative because the primaryjoin can be
defined as a string that will not be compiled until later. That can be
deferred until after everything is defined.
--
Mike Conley
On Thu, Nov 11, 2010 at 1:33 PM, Jonathan Gardner <
[email protected]> wrote:
> This is what I need to do, except the Merchant object is defined
> before the Deal object. In the example in the documentation, I have
> mapped User before I have mapped Address.
>
>
--
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.