Flas-SQLAlchemy的增刪查改基本操作

本篇主要講數據庫的基本操作--新建,更新,刪除,查找

在Flas-SQLAlchemy中,創建數據庫的方法是db.create_all(),在狗書例子中,我們看到連接sqlite後會有一個data.sqlite的文件,如果該數據庫表已經存在,那麼該方法不會重新創建或者更新這個表的。若果修改模型後,要更新數據庫表,粗暴的方法是先刪除舊錶再重新創建,刪除的方法是db.drop_all(),提醒,這種粗暴更新法是會銷燬數據的。

這裡通過數據庫會話管理對數據庫所做的改動,會話由db.session表示。在準備把對象寫入數據庫之前,要先將其添加到會話中,然後使用commit提交。這裡的會話session與前面的flaks session對象是沒有關係的,數據庫的話會也稱為事務,這事務能保證數據庫的一致性,提交操作使用原子方式把會話中的對象全部寫入數據庫。如果寫入會話時發生錯誤,那麼整個會話會失效,這樣能避免部分更新導致數據庫不一致性。而且,數據庫會話可以進行回滾操作,即把對象還原到之前在數據庫時的狀態,回滾方法時rollback

修改行,可以使用會話的add方法db.session.add();刪除行,可以使用會話的db.session.delete();說明,修改與刪除都是要提交才會生效的。對於數據庫操作,查找是最最常用的,Flask-SQLAlchemy為每個模型類都提供了query查詢對象,可以取回對應表中的記錄,其中all()是以列表的形式返回所有結果。要想經確查找,可以使用過濾器filter,過濾器是可以多個一起用的。對於關聯查詢,用起面提到的db.relationship。