use the "passive_updates=True, passive_deletes='all'" flags.  These  
are described at 
http://www.sqlalchemy.org/docs/05/sqlalchemy_orm.html#docstrings_sqlalchemy.orm_modfunc_relation
 
  .


On Dec 5, 2008, at 11:42 AM, James Brady wrote:

> Hi all,
> I'm trying to get deletes and updates cascaded down from a parent  
> object to the child objects (connected by ForeignKey).
>
> It all seems pretty simple in the docs, but I can't get it to work!  
> I'm using MySQL with the InnoDB engine, and have played with all the  
> variation of the onupdate, ondelete and cascade arguments I can  
> think of.
>
> The problem is that immediately before the DELETE command is sent to  
> MySQL, there are UPDATE commands nulling out the foreign key  
> references of the child objects, so MySQL doesn't trigger it's ON  
> DELETE CASCADE action, and for some reason cascade="all, delete- 
> orphan" doesn't clean up the children with NULL FKs.
>
> Here's a simplified model:
> users_table = Table('tg_user', metadata,
>     Column('user_id', Integer, primary_key=True),
>     Column('created', DateTime, default=datetime.now),
>     mysql_engine='InnoDB',
> )
>
> hat_table = Table('hat', metadata,
>     Column('id', Integer, primary_key=True),
>     Column('name', Unicode(100)),
>     Column('user_id', Integer, ForeignKey('tg_user.user_id'),
>         onupdate='CASCADE', ondelete='CASCADE'),
>     mysql_engine='InnoDB',
> )
>
> class User(object):
>     pass
>
> class Hat(object):
>     pass
>
> mapper(User, users_table)
>
> mapper(Hat, hat_table,
>     properties = {
>         'user': relation(User, backref="hats", cascade="all, delete,  
> delete-orphan"),
>     }
> )
>
> And the log from SA when I do a User.delete:
>  BEGIN
>  UPDATE hat SET user_id=%s WHERE hat.id = %s
>    [None, 1L]
>  DELETE FROM tg_user WHERE tg_user.user_id = %s
>    [1L]
>  COMMIT
>
> Any help would be much appreciated!
>
> James
>
> >


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to