# Tagging class TagItem(object): pass class Tag(object): pass tags_items_tags = Table('tags_items_tags', metadata, Column('id', Integer, ForeignKey('tags_data.id'), primary_key=True), Column('item_id', Integer, ForeignKey('tag_item.id'), primary_key=True) ) tags_data = Table('tags_data', metadata, Column('id', Integer, primary_key=True), Column('name', Unicode(128), nullable=False, index=True) ) tag_item = Table('tag_item', metadata, Column('id', Integer, primary_key=True), Column('item_id', Integer), Column('type_id', Integer), ) assign_mapper(session.context, TagItem, tag_item, properties={'tags':relation(Tag, secondary=tags_items_tags), } ) assign_mapper(session.context, Tag, tags_data, properties={'items':relation(TagItem, secondary=tags_items_tags), } ) def _getItems(type_id, tagList, related): // Find all items which have the tags in tagList and belong to type_id type return []