Sto cercando di utilizzare SQLAlchemy per implementare un modello di gruppi di utenti di base in cui gli utenti possono avere più gruppi e gruppi possono avere più utenti.SQLAlchemy cancellazione orfani molti a molti
Quando un gruppo diventa vuoto, voglio che il gruppo sia cancellato (insieme ad altre cose associate al gruppo.) Fortunatamente, la cascata di SQLAlchemy funziona bene con queste situazioni più semplici).
Il problema è che cascade = 'all, delete-orphan' non fa esattamente quello che voglio; invece di eliminare il gruppo quando il gruppo diventa vuoto, cancella il gruppo quando qualsiasi membro lascia il gruppo.
L'aggiunta di trigger al database funziona correttamente per l'eliminazione di un gruppo quando diventa vuoto, tranne per il fatto che i trigger sembrano ignorare l'elaborazione a cascata di SQLAlchemy, quindi le cose associate al gruppo non vengono eliminate.
Qual è il modo migliore per eliminare un gruppo quando tutti i suoi membri lasciano questa eliminazione in cascata a entità correlate.
Capisco che potrei farlo manualmente trovando ogni posto nel mio codice in cui un utente può lasciare un gruppo e poi fare la stessa cosa del trigger tuttavia, temo che mi mancherebbe il codice (e io sono pigro).
Penso che potrebbe essere un po 'complicato rispondere a questa domanda senza ulteriori dettagli sul tuo codice (come hai impostato la relazione molti-a-molti, dove hai inserito delete-orphan, ecc), grosso modo è lo schema, ecc. –
Ho provato l'eliminazione-orfano sul backref e la relazione normale(). La relazione è fondamentalmente un mapper (Utente, utenti, proprietà = {'gruppi': relazione = relazione (Gruppo, secondario = gruppi_utente, backref = backref ('utenti'))}) –