Flask-SQLAlchemy一对多 一对一 多对多关联

1. 在 Flask-SQLAlchemy 中,实现 一对多 和 一对一 还有多对多关联可以通过以下方式:

1.1 一对多关联

        假设有两个模型,Author(作者)和 Book(书籍),一个作者可以有多本书。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Author(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    # 定义与 Book 模型的一对多关系
    books = db.relationship('Book', backref='author')

class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String)
    author_id = db.Column(db.Integer, db.ForeignKey('author.id'))

在上述示例中,通过在 Author 模型中定义 books 属性,并在 Book 模型中定义 author_id 外键来建立一对多的关系。

2. 一对一关联

        假设 User(用户)和 Profile(用户资料)是一对一的关系。

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    # 定义与 Profile 模型的一对一关系
    profile = db.relationship('Profile', uselist=False, backref='user')

class Profile(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    bio = db.Column(db.String)

在上述示例中,通过在 User 模型中设置 relationship 的 uselist=False 来表示一对一关系。

在实际使用中,通过这些关联关系,可以方便地进行查询、添加、更新和删除等操作,例如获取某个作者的所有书籍,或者获取某个用户的资料等。

3. 多对多关联:

'''<--------------> 多对多模型 <-------------->'''
tags = db.Table('tags',
                db.Column('tag_id', Integer, db.ForeignKey('tag.id')),
                db.Column('page_id', Integer, db.ForeignKey('page.id'))
                )


class Page(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tags = db.relationship('Tag', secondary=tags,
                           backref=db.backref('pages', lazy='dynamic'))


class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值