ok its fixed in 2750 and it was mega-dumb, yes it was the  
uselist=False.   lets pretend this one didnt happen this late in the  
game....


On Jun 20, 2007, at 2:52 AM, Eric Ongerth wrote:

> items = Table('items', metadata,
>     Column('id', Integer, primary_key=True, autoincrement=True),
>     Column('type', String(20)))
>
> skis = Table('skis', metadata,
>     Column('id', Integer, primary_key=True),
>     Column('data', Integer),
>     ForeignKeyConstraint(['id'], ['items.id']))
>
> events = Table('events', metadata,
>     Column('id', Integer, primary_key=True),
>     Column('etype', String(20)),
>     Column('data', Integer))
>
> reservations = Table('reservations', metadata,
>     Column('id', Integer, ForeignKey('events.id'), primary_key=True),
>     Column('customer_id', Integer, ForeignKey('customers.id')),
>     Column('data', Integer))
>
> gearsets = Table('gearsets', metadata,
>     Column('id', Integer, primary_key=True),
>     Column('event_id', Integer, ForeignKey('events.id')),
>     Column('data', Integer))
>
> historyfile = Table('historyfile', metadata,
>     Column('item_id', Integer, ForeignKey('items.id'),  
> primary_key=True),
>     Column('gearset_id', Integer, ForeignKey('gearsets.id'),  
> primary_key=True))
>
> currentfile = Table('currentfile', metadata,
>     Column('item_id', Integer, ForeignKey('items.id'),  
> primary_key=True),
>     Column('gearset_id', Integer, ForeignKey('gearsets.id'),  
> primary_key=True))
>
> futurefile = Table('futurefile', metadata,
>     Column('item_id', Integer, ForeignKey(' items.id'),  
> primary_key=True),
>     Column('gearset_id', Integer, ForeignKey(' gearsets.id'),  
> primary_key=True))
>
> customers = Table('customers', metadata,
>     Column('id', Integer, primary_key = True, autoincrement=True),
>     Column('data', Integer))
>
> class Item(object): pass
> class Ski(Item): pass
> class GearSet(object): pass
> class Event(object): pass
> class Reservation(Event): pass
> class Customer(object): pass
>
> item_join = polymorphic_union(
>     {
>         'ski':items.join(skis),
>         'item':items.select(items.c.type=='item'),
>     }, None, 'ijoin')
>
> item_mapper = mapper(Item, items,
>     select_table=item_join,
>     polymorphic_on=item_join.c.type,
>     polymorphic_identity='item',
>     properties = {
>         'history': relation(GearSet,
>             secondary=historyfile,
>             backref=backref('items_history', uselist=True),
>             uselist=True),
>         'current': relation(GearSet,
>             secondary=currentfile,
>             backref=backref('items_current', uselist=True),
>             uselist=False),
>         'future': relation(GearSet,
>             secondary=futurefile,
>             backref=backref('items_future', uselist=True),
>             uselist=True)})
>
> customer_mapper = mapper(Customer, customers)
>
> gearset_mapper = mapper(GearSet, gearsets,
>     properties = {
>         'event': relation(Event,
>             backref=backref('gearsets', uselist=True),
>             uselist=False)
>     })
>
>
> event_join = polymorphic_union(
>     {
>         'reservation':events.join(reservations),
>         'event':events.select(events.c.etype=='event'),
>     }, None, 'ejoin')
>
> event_mapper = mapper(Event, events,
>     select_table=event_join,
>     polymorphic_on=event_join.c.etype,
>     polymorphic_identity='event')
>
> reservation_mapper = mapper(Reservation, reservations,
>     inherits=event_mapper,
>     polymorphic_identity='reservation',
>     properties = {
>         'customer': relation(Customer,
>             backref=backref('reservations', uselist=True),
>             uselist=False)
>     })
>
> ski_mapper = mapper(Ski, skis,
>     inherits=item_mapper,
>     polymorphic_identity='ski')
>
>
> if __name__ == '__main__':
>     metadata.create_all()
>     session = create_session()
>
>     ski = Ski()
>     gearset = GearSet()
>     customer = Customer()
>     reservation = Reservation()
>     reservation.customer = customer
>     gearset.items_future.append(ski)
>     gearset.event = reservation
>     session.save(reservation)
>     session.flush()
>
>     item = session.query(Item).selectfirst()
>     item.future = []
>     session.delete(item)
>     session.flush()
>     session.close()
>     metadata.drop_all()
>


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to