Thanks Michael, and what about `type` relationship?
Or would it be much simpler have no relation at all, since there must be no actions on children on parent update / delete? If I had to do this with plain SQL I'd simply make a `measures LEFT JOIN types ON measures.type_id = types.id` to get type description, if any, so I realize probably the relationship is not really needed... Any advice welcome anyway... Thank you On Dec 2, 3:55 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > On Dec 2, 2010, at 6:48 AM, neurino wrote: > > > > > > > Let's say I have acquisitions at regular intervals and each > > acquisition I get different measures. > > > Each meausre has a value and a numeric type id (1 = temperature, 2 = > > humidity ecc...) > > > I want user to insert text description for type id he knows, if he > > wants. > > > I end up having this 3 tables: > > > measures = Table('measure', metadata, > > Column('id', Integer, primary_key=True), > > Column('acq_id', Integer, ForeignKey('acquisitions.id'), > > nullable=False) > > Column('type_id', Integer, ForeignKey('types.id'), > > nullable=False), > > Column('value', Float, nullable=False), > > ) > > > acquisitions = Table('acquisitions', metadata, > > Column('id', Integer, primary_key=True), > > Column('datetime', DateTime, nullable=False), > > ) > > > types = Table('types', metadata, > > Column('id', Integer, primary_key=True, autoincrement=False), > > Column('desc', String, nullable=False), > > ) > > > [class definitions...] > > > orm.mapper(Acquisition, acquisitions) > > orm.mapper(Type, types) > > orm.mapper(Measures, measure, properties={ > > 'type': orm.relationship(Type, backref='measures'), > > 'acquisition': orm.relationship(Acquisition, backref='measures'), > > }) > > > Now, while I want, deleting an acquisition, all child measures are > > deleted too, > > > I DON'T want any modification in data if the user edit types, for > > example: > > > - deletes a type (related measures are not deleted and their type_id > > is not changed in null value) > > > - edits the type.id (precedent associated measures are not updated to > > new type_id but mantain the old one). > > > How can I achieve this? > > I guess I should use cascade in relationship but can't figure how > > > Thanks for your support! > > the cascade to delete child items when parent is deleted here would be: > > 'acquisition': orm.relationship(Acquisition, backref=backref('measures', > cascade='all, delete-orphan')) > > > > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To post to this group, send email to sqlalch...@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 sqlalch...@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.