二、一對一關係:表的擴充套件
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 表中的一行。只有當乙個相關列是乙個主鍵或具有唯一約束時,才能建立一對多關係。簡單來講就如球員與球隊的關係 一對多 從球隊角度來說乙個球隊擁有多個球員 即為一對多 多對一 從球員角...
資料庫設計 一對一 一對多 多對多)
關聯對映 一對多 多對一 存在最普遍的對映關係,簡單來講就如球員與球隊的關係 一對多 從球隊角度來說乙個球隊擁有多個球員 即為一對多 多對一 從球員角度來說多個球員屬於乙個球隊 即為多對一資料表間一對多關係如下圖 關聯對映 一對一 一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而...