Thanks ! To respond to my needs, it becomes :
class NodeAttribute(Base): __tablename__ = 'node_attribute' node_id = Column('n_id', Integer, ForeignKey('node.n_id'), primary_key=True) attribute = Column('na_id', String, primary_key=True) def __init__(self, attribute): self.attribute = attribute class Node(Base): __tablename__ = 'node' id = Column('n_id', Integer, primary_key=True) node_attributes = relationship(NodeAttribute, cascade="all, delete-orphan", lazy='joined', collection_class=list) attributes = AssociationProxy('node_attributes', 'attribute') On Mar 17, 1:57 am, Michael Bayer <mike...@zzzcomputing.com> wrote: > On Mar 16, 2011, at 8:12 PM, zaza witch wrote: > > > Hi everyone, > > > I am currently in work experience ... > > > The first step of my work was to build a small application using > > sqlalchemy. > > > Association proxy seems to allow to simplify many-to-many > > relationships management. > > Can i use it to store define a class with an attribute which is a list > > of string (or integers ...) ? > > I recently put up an example of this which deals with lists of dicts of > integers, it can be adapted to do lists of strings: > > http://groups.google.com/group/sqlalchemy/msg/342a8c4d814d520a > > > Let me explain: > > > With association proxy, i can do something like: > > > class Service(Base): > > __tablename__ = 'service' > > id = Column('s_id', Integer, primary_key=True) > > name = Column('s_name', String(63), unique=True) > > class NodeService(Base): > > __tablename__ = 'node_service' > > node_id = Column('n_id', Integer, ForeignKey('node.n_id'), > > primary_key=True) > > service_id = Column('s_id', Integer, ForeignKey('service.s_id'), > > primary_key=True) > > service = relationship(Service lazy='joined') > > class Node(Base): > > __tablename__ = 'node' > > id = Column('n_id', Integer, primary_key=True) > > node_services = relationship(NodeService, cascade="all, delete- > > orphan", lazy='joined') > > services = AssociationProxy('nodes_services', 'service', lambda > > service: NodeService(service=service)) > > ... > > mynode = Node() > > mynode.services.append(Service("myservice")) > > # instead of > > mynode.node_services.append(NodeService(service=Service("myservice") > > session.add(mynode) > > > Is there a way to suppress the Service class in order to handle a list > > of string (from python point of view) and have something like: > > > class NodeAttribute(Base): > > __tablename__ = 'node_attribute' > > node_id = Column('n_id', Integer, ForeignKey('node.n_id'), > > primary_key=True) > > attribute = Column('na_id', String, primary_key=True) > > class Node(Base): > > __tablename__ = 'node' > > id = Column('n_id', Integer, primary_key=True) > > node_services = relationship(NodeService, cascade="all, delete- > > orphan", lazy='joined') > > node_attributes = relationship(NodeAttribute cascade="all, delete- > > orphan", lazy='joined') > > services = AssociationProxy('nodes_services', 'service', lambda > > service: NodeService(service=service)) > > attributes = AssociationProxyLike('node_attributes', ?, ?) > > > mynode = Node() > > mynode.attributes.append("myattribute") > > # instead of > > mynode.node_attributes.append(NodeAttribute("myattribute")) > > # attributes look like a list of string (with append/del functions) > > session.add(mynode) > > > The second step is to replace sqlalchemy+database by something > > else ... i will make an other message on the topic > > > -- > > 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 > > sqlalchemy+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/sqlalchemy?hl=en. -- 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 sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.