flask學習(一)

smartab發表於2019-07-15

flask 模型類中relationship的使用及其引數backref的說明,

模型類

class Author(db.Model):
    __tablename__ = 't_author'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))

    # bk是關係的名字,Author的例項物件可以通過bk來查詢其對應的有那些圖書
    # Book是該關係對應的模型類類名,名字是類名,不能隨意起
    # backref='author_i'是回撥的引用,author_i是自定義的名字,
    #     Book的例項對習慣可以通過author_i來查詢其對應的作者
    bk = relationship('Book', backref='author_id')

class Book(db.Model):
    __tablename__ = 't_book'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))

    # Book的外來鍵,db.ForeignKey('t_author.id')裡面必須是('引用的表表名.引用表的主鍵')
    author_id = db.Column(db.Integer, db.ForeignKey('t_author.id'))

插入測試資料

# 插入資料
    au1 = Author(name='我吃蕃茄')
    au2 = Author(name='唐家三少')
    db.session.add_all([au1, au2])

    bk1 = Book(name='吞噬星空', author_id=au1.id)
    bk2 = Book(name='盤龍',author_id=au1.id)
    bk3 = Book(name='龍王傳說',author_id=au2.id)
    db.session.add_all([bk1, bk2, bk3)

    db.session.commit()

查詢示例

# 示例
    #查詢 我吃蕃茄 寫了哪些書,查詢的結果是書
    au1.bk
    #查詢盤龍是誰寫的,查詢的結果是作者
    bk1.author_id

相關文章