Flask資料庫 多對一 一對一關係實現

2021-09-28 17:56:01 字數 1700 閱讀 7909

二、一對一關係:表的擴充套件

from sqlalchemy.orm import relationship

class

user

(base):.

..username = column(..

.)#articles = relationship("article")

class

article

(base):.

..author = relationship(

"user"

,backref =

"articles"

)user = user(username=

'zhiliao'

)article1 = article(title=

'abc1'

,content =

'123'

)article2 = article(title=

'dedd'

,content=

'yyyy'

)session.add(user)

session.commit(

)

問題描述:由於user表中部分欄的資料不經常需要,為節省資源,不需每次查詢時都提取其中資料,因此將user表中不常用欄的資料放在擴充套件表中,取名為userextend,並與user表建立一對一關係。即userextend表中一條資料只能對應user表中的單條資料,換句話說,乙個user物件只能對應乙個userextend物件。需要在建立relationship物件時傳入uselist = false實現。

from sqlalchemy.orm import relationship,backref

class

user

(base):.

..username = column(..

.)#extend = relationship("userextend",uselist = false)

class

userextend

(base):id

= column(integer, primary_key =

true

, autoincrement =

true

) school = column(string(50)

) uid = column(integer,foreignkey(

"user.id"

) user = relationship(

"user"

,backref = backref(

"extend"

,uselist =

false))

#此條使user.extend屬性不再是列表,也不可同時新增多條userextend物件.

user =user(username =

'zhiliao'

)userextend1 = userextend(school =

'zhiliao ketang'

user.extend = userextend1

session.add(user)

session.commit(

)

資料庫 一對一,一對多,多對多

一對一 就是說a表中的一條記錄對應著b表的一條記錄。大家可能會覺得這不是變得複雜了嗎?其實不然,如果,當一張表的字段過於太多,而很多字段可能只有在某些情況下,才會使用到,這時也可以考慮使用一對一設計。條件 建立單獨的表就行了,優點 1.便於管理 可提高一定的查詢速度 2.減輕 cpu 的 io 讀寫...

資料庫的一對一,一對多,多對多

關聯對映 一對多 多對一 存在最普遍的對映關係,a 表中的一行可以匹配 b 表中的多行,但是 b 表中的一行只能匹配 a 表中的一行。只有當乙個相關列是乙個主鍵或具有唯一約束時,才能建立一對多關係。簡單來講就如球員與球隊的關係 一對多 從球隊角度來說乙個球隊擁有多個球員 即為一對多 多對一 從球員角...

資料庫設計 一對一 一對多 多對多)

關聯對映 一對多 多對一 存在最普遍的對映關係,簡單來講就如球員與球隊的關係 一對多 從球隊角度來說乙個球隊擁有多個球員 即為一對多 多對一 從球員角度來說多個球員屬於乙個球隊 即為多對一資料表間一對多關係如下圖 關聯對映 一對一 一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而...