在models中:
建立乙個一的類:
建立乙個多的類:#建立乙個一的類
class grade(db.model):
id = db.column(
db.integer,
primary_key=true,
autoincrement=true,
)name = db.column(
db.string(20),
unique=true
)#重點,relationship,寫在一的類中
stus = db.relationship(
#對應的多的那個類名
"stu",
#反向的關係,一般用一的類的類名(自己的類名)
backref="grade",
lazy=true
)
在views中:#建立乙個多的類
class stu(db.model):
id = db.column(
db.integer,
primary_key=true,
autoincrement=true,
)name = db.column(
db.string(20),
unique=true
)#外來鍵
grade_id = db.column(
db.integer,
#外來鍵db.foreignkey("grade.id")
)
用多去查詢一:
用一去查詢多:@blue.route("/get_grade/")
def get_grade(sid):
#查詢學生(一)中id=sid的資料物件
stu = stu.query.get(sid)
#用這個資料的物件直接(.反向關係名字)查詢到這學生id對應的班級
grade = stu.grade
return grade.name
在models中:@blue.route("/get_stu/")
def get_stu(gid):
#查詢班級(多)中id=gid的資料物件,在直接訪問自己(多)中的屬性stus(relationship)
stu = grade.query.get(gid).stus
for i in stu:
print(i)
return "ok"
建立第乙個多的類:
建立中間類:class tag(db.model):
id = db.column(
db.integer,
primary_key=true,
autoincrement=true,
)title = db.column(
db.string(20),
)
建立第二個多的類(其中乙個多的類寫relationship):tags = db.table(
#中間表名字
"tags",
db.column(
"tag_id",
db.integer,
db.foreignkey("tag.id"),
primary_key=true
),db.column(
"book_id",
db.integer,
db.foreignkey("book.id"),
primary_key=true
))
在views中:class book(db.model):
id = db.column(
db.integer,
primary_key=true,
autoincrement=true,
)name = db.column(
db.string(20),
)tags = db.relationship(
#對應另外乙個多的類的類名
"tag",
#中間表
secondary=tags,
#反向的關係,一般用一的類的類名(自己的類名)
backref=db.backref("books", lazy=true),
lazy=true
)
@blue.route("/get_book/")
def get_book_by_tag(t_id):
tag = tag.query.get(t_id)
books = tag.books
for i in books:
print(i.name)
return "ok"
個人理解是:兩個一對多合併在一起,中間類就是兩個一對多的多那個類。@blue.route("/get_tag/")
def get_tag_by_book(b_id):
book = book.query.get(b_id).tags
for i in tags:
print(i.title)
return "ok"
flask 資料模型的外來鍵關係
sql資料庫中,兩個表之間的關係表現為外來鍵.在sqlalchemy的模型中,也可以表現這種模型之間的關聯關係.class role db.model tablename roles id db.column db.integer,primary key true name db.column db...
關係模型關係模型
關係模型研究的內容 乙個關係就是乙個table,關係模型就是處理table的 在處理table時涉及到以下內容 關係模型三要素 表 關係 下圖是對一張表的定義,我們稱表也為關係。域 所有可取的列值構成的集合。域的笛卡爾積的子集被成為關係。下圖表示了使用關係模式對關係進行描述,關係模式中的a1是屬性名...
Flask 物件關係
from sqlalchemy import column,integer,string,metadata,foreignkey from sqlalchemy.ext.declarative import declarative base from sqlalchemy.orm import re...