Hi Phil -
im going to run this locally to see whats up - my immediate intution
is that it has something to do with the Column objects you are using
to override those loaded from the "autoload=True" since thats the only
thing here that is at all unusual...maybe try not using autoload=True
for that partcular table. but ill run it here regardless and let you
know what i find.
On Jan 28, 2008, at 4:03 PM, Phil Coombs wrote:
> engine = create_engine(connectString, echo=False)
> metadata = MetaData(engine)
>
> orders_table = Table('orders', metadata, autoload=True)
> items_table = Table('items', metadata, autoload=True)
> orderitems_table = Table('order_items', metadata,
> Column('oi_order_id', Integer,
> ForeignKey('orders.order_id'),
> primary_key=True),
> Column('oi_item_id', Integer,
> ForeignKey('items.item_id'),
> primary_key=True),
> autoload=True
> )
>
> class Order(object):
> def __init__(self, customer_name, order_date):
> self.customer_name = customer_name
> self.order_date = order_date
>
> class Item(object):
> def __init__(self, description, price):
> self.description = description
> self.price = price
>
> class OrderItem(object):
> def __init__(self, item, price=None):
> self.item = item
> self.price = price or item.price
>
> mapper(Order, orders_table, properties = {
> 'id' : orders_table.c.order_id,
> 'customer_name' : orders_table.c.o_customer_name,
> 'order_date' : orders_table.c.o_order_date,
> 'order_items' : relation(OrderItem)
> })
>
> mapper(Item, items_table, properties = {
> 'id' : items_table.c.item_id,
> 'description' : items_table.c.it_description,
> 'price' : items_table.c.it_price
> })
>
> mapper(OrderItem, orderitems_table, properties = {
> 'order_id' : orderitems_table.c.oi_order_id,
> 'item_id' : orderitems_table.c.oi_item_id,
> 'price' : orderitems_table.c.oi_price,
> 'item' : relation(Item)
> })
>
> Session = sessionmaker(bind=engine, autoflush=True,
> transactional=True)
> session = Session()
>
> session.save(Item('Item A', 10.99))
> session.save(Item('Item B', 8))
> session.save(Item('Item C', 4))
> session.save(Item('Item D', 1))
> session.flush()
>
> def item(name):
> return session.query(Item).filter_by(description=name).one()
>
> order = Order("cust1", datetime.now())
> order.order_items.append(OrderItem(item('Item A')))
> order.order_items.append(OrderItem(item('Item B'),10))
> order.order_items.append(OrderItem(item('Item C')))
>
> session.save(order)
> session.commit()
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---