from sqlalchemy import * from sqlalchemy.orm import * engine = create_engine('sqlite:///') metadata = MetaData(engine) # Tables user_table = Table('user', metadata, Column('id', Integer, primary_key=True), Column('login', String(8), nullable=False, unique=True)) item_table = Table('item', metadata, Column('id', Integer, primary_key=True), Column('address', String(50), nullable=False, unique=True)) tag_table = Table('tag', metadata, Column('id', Integer, primary_key=True), Column('tag', String(50), nullable=False, unique=True)) user_tag_item_table = Table('user_tag_item', metadata, Column('id', Integer, primary_key=True), Column('user_id', Integer, ForeignKey('user.id')), Column('item_id', Integer, ForeignKey('item.id')), Column('tag_id', Integer, ForeignKey('tag.id'))) metadata.create_all() Session = sessionmaker(bind=engine, autoflush=True, transactional=True) # Objects class User(object): def __init__(self, login): self.login = login def __repr__(self): return "User(%r)" % self.login class Item(object): def __init__(self, address): self.address = address def __repr__(self): return "Item(%r)" % self.address class Tag(object): def __init__(self, tag): self.tag = tag def __repr__(self): return "Tag(%r)" % self.tag class UserTagItem(object): def __init__(self, user, tag, item): self.user = user.id self.tag = tag.id self.item = item.id def __repr__(self): return "UserTagItem(%r %r %r)" % (self.user, self.tag, self.item) # Mappers ???