2013-05-15 13 views

risposta

91

Prova delete:

models.User.query.delete() 

Da the docs: risposta Returns the number of rows deleted, excluding any cascades.

+1

Hmm, questo ha funzionato per me, ma solo dopo aver cambiato a qualcosa del genere:. 'Models.User.query() delete()' – killthrush

+0

non funziona se si utilizza una query come questa: ' Model.query.filter (Model.some_id == some_id, Model.other_id.in_ (other_ids) .delete() ' –

+1

Non dimenticare di eseguire il commit dopo l'eliminazione. – Kevin

57

di DazWorrall è a posto. Ecco una variante che potrebbe essere utile se il codice è strutturato in modo diverso rispetto alla OP del:

num_rows_deleted = db.session.query(Model).delete() 

Inoltre, non dimenticate che la cancellazione non avrà effetto fino a quando si commettono, come in questo frammento:

try: 
    num_rows_deleted = db.session.query(Model).delete() 
    db.session.commit() 
except: 
    db.session.rollback() 
16

È possibile attivare una singola query per questo.

#for all records 
db.session.query(Table_name).delete() 
db.session.commit() 

qui db è l'oggetto classe Flask SQLAlchemy. Cancellerà tutti i record da esso e se si desidera eliminare record specifici, quindi provare la clausola filter_by nella query. ex.

#for specific value 
db.session.query(Table_name).filter_by(id==123).delete() 
db.session.commit() 
+1

Sono in un tipo simile di situazione. 4 record nella tabella sin da ora, da id 1 a 4. Quando eseguo un db.session.query (Table_name) .delete() db.session.commit() e poi se faccio un db.session.add () di nuovo per aggiungere nuovi record, il prossimo record ottiene un id di 5. Dato che il mio tavolo è vuoto, voglio che i miei nuovi record ora ottengano di nuovo un id a partire da 1. Come posso fare questo? – qre0ct

+0

Please r fare riferimento a questo link http://stackoverflow.com/questions/23038422/reset-id-count-after-table-delete –

Problemi correlati