資料表操作分別是新增( Create )、查詢( Read )、更新( Update )、刪除( Delete ),也就是所謂的 CRUD 。
在新增資料時,要使用資料物件將資料加入到資料表中,有三個步驟:
Step 1: 建立資料物件
Step 2: 資料必須先放到暫存資料 db.session
中,使用 add()
方法寫到暫存資料
Step 3: 將暫存資料新增到資料表,使用 commit()
方法
add()
方法將資料暫時存到 db.session
中,最後用 commit()
方法新增到資料表裡。執行程式後,開啟瀏覽器瀏覽服務的頁面,輸入 127.0.0.1:5000/insert
這個網址執行程式,顯示已新增一筆資料
開啟 pdAdmin 管理頁面檢視資料新增的結果。在資料庫點選 testdb → Schemas → Public → Tables → students ,在 students 上按滑鼠右鍵,點選 View/Edit Data → All Rows
在右下方可以看到顯示新增的一筆資料
同新增單筆資料的方法,先新增多個學生資料物件,再將所有學生資料物件放到串列物件中,再來利用 add()
方法將串列物件的資料暫時存到 db.session
中,最後用 commit()
方法新增到資料表裡。
執行程式後,開啟瀏覽器瀏覽服務的頁面,輸入 127.0.0.1:5000/insert2
這個網址執行程式,顯示已新增多筆資料
開啟 pdAdmin 管理頁面檢視資料新增的結果,在右下方顯示新增的多一筆資料
Flask-SQLAlchemy 在資料物件類別提供了 query 屬性,使用時會生成新的資料物件,將所有資料返回。取得資料的方法有 all()
方法、first()
方法、 filter_by()
方法及 get()
方法,下方將分別介紹。
query.all()
datas = students.query.all()
query.first()
datas = students.query.first()
query.filter_by()
datas = students.query.filter_by(name='張同學').first()
#篩選回來的資料是串列,必須使用 all()或是 first()的方法顯示所有或第一筆資料
query.get()
student = students.query.get(1)
範例 1: 用 query.all() 查詢所有資料
輸入網址 127.0.0.1:5000/queryall
就能夠看到查詢的所有資料
範例 2: 用 query.get() 查詢資料
在網址列最後面打上欲查詢的主索引鍵,會顯示對應的資料
範例 3: 用 query.filter_by() 查詢資料,這裡的範例是以姓名作為篩選條件
在網址列最後面打上欲查詢的姓名,會顯示對應的資料
Step 1: 將要更新的資料物件查詢出來
Step 2: 將資料物件要修改的屬性設定新的值
Step 3: 用 db.session.commit()
方法更新到資料表中
範例:
將第五筆資料的姓名更新為李同學,電話更新為 0900123456
開啟 pdAdmin 管理頁面檢視資料更新的結果,在右下方顯示更新的資料
Step 1: 將要刪除的資料物件查詢出來
Step 2: 用 db.session.delete()
刪除這個資料物件
Step 3: 用 db.session.commit()
方法更新到資料表中
範例:
將第五筆資料刪除
開啟 pdAdmin 管理頁面檢視資料刪除的結果,會發現第五筆資料已被刪除
遇到的小小問題:一開始先建立了三筆練習用的資料,刪除後再新增資料時發現 sid 就從 4 開始,雖說是主索引欄位,但應該還是有可以讓他從頭來過的辦法吧...
尚未研究出來
參考資料:Python與LINE Bot機器人全面實戰特訓班-Flask最強應用