sqlalchemy: how to define association object with declarative style?

Jerry Fleming jerry.fleming at saybot.com
Tue Sep 7 05:39:18 EDT 2010


Hi,

I want to define the relationship for my users and their groups with
declarative style (so that the relating model can inherit Timestamp
mixin and Tablename mixin):

class User(DeclarativeBase, Tablename, TimestampMixin):
    '''User avatar is named after its id.
    A user may be a student or teacher or both.
    '''
    id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
    username = Column(String(30), index=True, nullable=False, unique=True)
    password = Column(String(30), index=True, nullable=False)

class Group(DeclarativeBase, Tablename, TimestampMixin):
    id = Column(Integer, Sequence('group_id_seq'), primary_key=True)
    name = Column(Unicode(20), unique=True, nullable=False)
    display = Column(Unicode(255))

class GroupUser(DeclarativeBase, Tablename, TimestampMixin):
    id = Column(Integer, Sequence('group_user_id_seq'), primary_key=True)
    user = Column(Integer, ForeignKey('user.id'), index=True),
    group = Column(Integer, ForeignKey('group.id'), index=True)

I was wondering how to associate User and Group with GroupUser with
GroupUser as the association object/proxy? The sqlalchemy docs only
mention only mention association tables, or non-declarative manual mapping.

Thanks.



More information about the Python-list mailing list