On Thursday 27 November 2008 11:42:28 David Harrison wrote:
> Which was the error I posted to ask about in the first place ;-)
>
> Writing a session extension for this problem seems like using a
> very very very large hammer, since I only need to trigger my
> 'manual cascade' in a particular circumstance.
i dont know, to me sessExt is a much softer hammer than mapperExt as
it has overall view at whats to be processed, before it is processed.
there is some info about which hook is called when, and what info is
available at what time, and what can and cannot be done then - see
SessionExt's and MapperExt's methods docs.
But the exact order and assumptions/dependencies thereof are still a
bit misty to me... 6 months after i asked for first time.
sorry i couldnot help.
> I'm hoping Mike or one of the devs might have advice on how this
> situation is meant to be handled ?
>
> 2008/11/27 <[EMAIL PROTECTED]>:
> > i've modified all relations to be all,delete-orphan and now it
> > does add them all - as your scoped session does - and then
> > complains:
> >
> > Deleting owner
> > BEGIN
> > DELETE FROM friendship WHERE friendship.id = %(id)s
> > [{'id': 1L}, {'id': 2L}]
> > DELETE FROM owner WHERE owner.id = %(id)s
> > {'id': 1L}
> > DELETE FROM dog WHERE dog.id = %(id)s
> > [{'id': 1}, {'id': 2}]
> > ROLLBACK
> > Traceback (most recent call last):
> > File "f.py", line 138, in <module>
> > session.flush()
> > ...
> > raise exc.DBAPIError.instance(statement, parameters, e,
> > connection_invalidated=is_disconnect)
> > sqlalchemy.exc.IntegrityError: (IntegrityError) update or delete
> > on table "dog" violates foreign key constraint
> > "friendship_dog_id_fkey" on table "friendship"
> > DETAIL: Key (id)=(1) is still referenced from table
> > "friendship". 'DELETE FROM dog WHERE dog.id = %(id)s' [{'id': 1},
> > {'id': 2}]
> >
> > well... u have other friendships referencing that same dog/s.
> >
> > so i tried this and that and if the friendship.dog has no
> > cascades at all (i.e. just default), then all seems ok - owner
> > and friendships deleted, dogs not.
> > i guess u want when 2nd owner gets deleted to delete the orphan
> > dogs? it's not in the src...
> >
> > maybe a better testcase would be of help - asserting whats in db
> > and what should not be, before and after.
> >
> > back on the initial question, mapperExt come to play too late in
> > session. u may try sessionExt hooks... or other/earlier mapperExt
> > hook... eventualy.
> >
> > svil
> >
> > On Thursday 27 November 2008 10:30:04 David Harrison wrote:
> >> Postgres is the intended deployment platform so it really does
> >> need to work on Postgres, that said last time I dug into this I
> >> found that SQLite is less strict on enforcing key constraints
> >> where Postgres isn't, so technically Postgres is right to
> >> complain.
> >>
> >> 2008/11/27 <[EMAIL PROTECTED]>:
> >> > and what that shoud do? attached is a changed version... do
> >> > see if that's what u want (it's sqlite, with plain session).
> >> > the only real change is cascade=all,delete-orphan on
> >> > house.owners... but i just unintentionaly guessed it.
> >> >
> >> > On Thursday 27 November 2008 09:51:38 David Harrison wrote:
> >> >> So this is actually a follow on from a question I posed quite
> >> >> a while back now:
> >> >>
> >> >> http://groups.google.com/group/sqlalchemy/browse_thread/threa
> >> >>d/4 530
> >> >> dffffd3f5585/eb4638599b02577d?lnk=gst&q=Postgres+cascade+erro
> >> >>r#e b463 8599b02577d
> >> >>
> >> >> So my approach to solving this problem was to use a
> >> >> MapperExtension, but it's giving me the error that I
> >> >> originally posted in this thread.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---