让我们说,我有一个数据库结构,有三个表,如下所示:
items - item_id - item_handle attributes - attribute_id - attribute_name item_attributes - item_attribute_id - item_id - attribute_id - attribute_value
我希望能够在sqlAlchemy中做到这一点:
item = Item('item1') item.foo = 'bar' session.add(item) session.commit() item1 = session.query(Item).filter_by(handle='item1').one() print item1.foo # => 'bar'
我是sqlAlchemy的新手,我在文档(http://www.sqlalchemy.org/docs/05/mappers.html#mapping-a-class-against-multiple-tables)中发现了这一点:
j = join(items,item_attributes,items.c.item_id == item_attributes.c.item_id). \ join(attributes,item_attributes.c.attribute_id == attributes.c.attribute_id) mapper(Item,j,properties={ 'item_id': [items.c.item_id,item_attributes.c.item_id],'attribute_id': [item_attributes.c.attribute_id,attributes.c.attribute_id],})