Estoy tratando de usar SQLAlchemy para implementar un modelo básico de grupos de usuarios donde los usuarios pueden tener múltiples grupos y grupos pueden tener múltiples usuarios.SQLAlchemy deleción huérfana de muchos a muchos
Cuando un grupo se vacía, quiero que se elimine el grupo (junto con otras cosas asociadas con el grupo. Afortunadamente, la cascada de SQLAlchemy funciona bien con estas situaciones más simples).
El problema es que cascade = 'all, delete-orphan' no hace exactamente lo que quiero; en lugar de eliminar el grupo cuando el grupo se vacía, elimina el grupo cuando cualquier miembro deja el grupo.
Agregar desencadenadores a la base de datos funciona bien para eliminar un grupo cuando se vacía, excepto que los desencadenadores parecen omitir el procesamiento en cascada de SQLAlchemy para que las cosas asociadas con el grupo no se eliminen.
¿Cuál es la mejor manera de eliminar un grupo cuando todos sus miembros se van y tienen esta cascada de eliminación a las entidades relacionadas.
Entiendo que podría hacer esto manualmente buscando en cada lugar de mi código donde un usuario puede abandonar un grupo y luego hacer lo mismo que el desencadenante; sin embargo, me temo que omitiría lugares en el código (y soy flojo).
Creo que puede ser un poco complicado responder a esta pregunta sin más detalles sobre tu código (cómo has configurado la relación de muchos a muchos, dónde has puesto el huérfano de eliminación, etc.), más o menos lo es el esquema, etc. –
Probé el delete-huérfano en el backref y la relación normal(). La relación es básicamente mapper (Usuario, usuarios, propiedades = {'groups': relation = relation (Group, secondary = users_groups, backref = backref ('users'))}) –