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