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 [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
-~----------~----~----~----~------~----~------~--~---