2013-05-15 218 views

回答

91

嘗試delete

models.User.query.delete() 

the docsReturns the number of rows deleted, excluding any cascades.

+1

嗯,這個工作對我來說,只是將其更改爲這樣的事情後:'models.User.query()刪除()' – killthrush

+0

如果使用這樣的查詢不起作用: ' Model.query.filter(Model.some_id == some_id,Model.other_id.in_(other_ids).delete()' –

+1

刪除後不要忘記提交。 – Kevin

57

DazWorrall的答案是當場上。這裏有可能是有用的變化,如果你的代碼比OP的結構是不同的:

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

而且,不要忘記,在你提交之前刪除纔會生效,在這個片段:

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

您可以爲此激發單個查詢。

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

這裏db是對象Flask SQLAlchemy類。它會從中刪除所有記錄,如果您想刪除特定記錄,請在查詢中嘗試filter_by子句。 ex。

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

我處於類似的情況。從表1到表4中的4條記錄。當我做一個db.session.query(Table_name).delete()db.session.commit(),然後如果我做了一個db.session.add() )再次添加新記錄,下一個記錄獲得5的id。由於我的表現在是空的,我希望我的新記錄現在再次獲得從1開始的id。我該怎麼做? – qre0ct

+0

請r因爲這個鏈接http://stackoverflow.com/questions/23038422/reset-id-count-after-table-delete –