you're probably looking for delete-orphan cascade in this case, if objects have foreign keys on their primary key columns you'd like them to be deleted when deassociated with their parent object.
Hollister wrote: > > Also, the following does nothing at all (does not delete and throws no > errors): > > for ka in kp.actions: > del ka > > But this: > > del kp.actions > > Throws the same assertion error. > > > On Aug 6, 11:01 am, Hollister <a.hollister.willi...@gmail.com> wrote: >> Still having a little trouble...here are the relevant mappings: >> >> orm.mapper(Keyphrase, keyphrase_table, properties = { >> 'message':orm.relation(Message, backref='keyphrase'), >> 'campaign':orm.relation(Campaign, backref='keyphrase'), >> 'actions':orm.relation(KeyphraseAction), >> }) >> >> orm.mapper(Action, action_table) >> >> orm.mapper(KeyphraseAction, keyphrase_action_table, properties={ >> 'action':orm.relation(Action), >> 'successMessage':orm.relation(Message, primaryjoin = >> keyphrase_action_table.c.success_message_id == message_table.c.id), >> 'failureMessage':orm.relation(Message, primaryjoin = >> keyphrase_action_table.c.failure_message_id == message_table.c.id), >> 'emailContent':orm.relation(EmailContent, primaryjoin = >> keyphrase_action_table.c.email_content_id == >> email_content_table.c.id), >> }) >> >> When I attempt to delete a KeyphraseAction from a Keyphrase instance >> as follows: >> >> # kp is a Keyphrase instance >> for i, ka in enumerate(kp.actions): >> del kp.actions[i] # this doesn't work! >> >> It throws an error: >> >> AssertionError: Dependency rule tried to blank-out primary key >> column 'keyphrase_action.keyphrase_id' on instance >> >> But this does work: >> >> assoc = meta.Session.query(m.KeyphraseAction)\ >> .filter(and_(m.KeyphraseAction.keyphrase_id == kp.id, >> m.KeyphraseAction.action_id == kp.actions[i].action.id))\ >> .one() >> >> meta.Session.delete(assoc) >> >> What am I doing wrong? >> >> On Aug 5, 3:05 pm, Hollister <a.hollister.willi...@gmail.com> wrote: >> >> > That was exactly the conclusion I reached before I read your reply. I >> > modeled it that way and it seems to work perfectly. Guess I was just >> > overthinking it. >> >> > Thanks for getting back to me, Mike. >> >> > On Aug 3, 11:41 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: >> >> > > On Aug 3, 2009, at 5:21 PM, Hollister wrote: >> >> > > > I have 2 tables which are related to each other through an M:N >> > > > relationship (Keyword & Action). Additionally, the relationship >> itself >> > > > has attributes, which I have as non-key attributes in a third >> table >> > > > (KeywordAction). I've modeled this dozens of different ways, but >> have >> > > > yet to get exactly what I want from the model. >> >> > > > At the ORM level, I want Keyword to have a property that is a >> > > > collection of KeywordAction instances. Each KeywordAction instance >> > > > would have a single Action instance property, so I could do things >> > > > like this: >> >> > > > ----------------------------------------------------------------------------------------------------------- >> > > > for ka in keyword.keyword_actions: >> > > > if ka.status == 'open': >> > > > ka.action.do_something() >> >> > > > keyword.keyword_actions.append(KeywordAction(action, status = >> 'open')) >> > > > ----------------------------------------------------------------------------------------------------------- >> >> > > > I've tried using the association_proxy, but I get the feeling >> that's >> > > > not the right tool for this job. >> >> > > the above example doesn't seem like it would need association proxy, >> a >> > > simple collection of relation()s, i.e. Keyword.keyword_actions, >> > > KeywordAction.action would do based on the navigation illustrated. >> >> > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---