[Flask教學] Flask-SQLAlchemy -ORM 多對多關聯篇 (四)

一. 前言

▍什麼是 ORM 架構

簡單來說是直接用 Python 的語法對資料庫進行操作,不需要直接寫 SQL 語法,ORM 背後會自動將 Python 代碼轉換成應對的 SQL 語法,再來進行對資料庫的操作。

關於更多 ORM 相關設定和操作更多內容可參考:

二. ORM關聯:多對多

ORM 多對多關聯

▍定義多對多模型

設定其實很簡單:
Step1. 設定 db.relationship(…) 關係
Step2. 設定 db.Table(‘relations’…),這設定會自動在資料庫建立新的關聯表
Step3. 在 db.Table(‘relations’…) 內設定 db.ForeignKey(…) 關係
就完成囉~

▍舉個簡單的栗子 🌰

首先我們定義了 product、Tag 這兩個模型,一個產品會有多個 Tag,而一個 Tag 也可能會被多個產品,所以多對多的模式就出現了~

  1. SQLAlchemy中設置多對多關聯時,我們並不需要去特別的定義一個 Model 來做中繼,而是透過Table的方法,來設罝MetaData,並記錄兩個 Model 的ForeignKey使用。
  2. “db.Table(‘relations’…)”的 relations 是待會 SQLAlchemy 會自動生成的關聯表名稱
  3. ” db.Column(‘tagid_rt’…) “則是設定裡面有的欄位

▍實作操作多對多資料庫

首先將資料庫 product_mul_to_mul 表中存進三筆資料,完成後會看到如下圖:

product_mul_to_mul

再來我們新增兩筆 Tag 的資料到 tag_mul_to_mul 表內,完成後會如下圖:

tag_mul_to_mul

最後我們將各產品與 Tag 互相帶上關係,完成後如下圖:

relation

最後我們來對商品查詢看看~

當查詢商品時後面只需要加上 db_product_tag_rel,就可以連同查詢 Tag 的表單

恭喜你已經完成多對多的新增和查詢囉~

最後~推薦 Flask 系列文章:

▍關於 Flask 教學系列目錄:

▍關於 Flask 資料庫 SQLAlchemy 文章:

[Flask教學] Flask-SQLAlchemy -ORM 多對多關聯篇 (四) 結束囉,感謝收看!

有關 Max行銷誌 的最新文章,都會發佈在 Max行銷誌的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *