Flask 数据库 - 一对多操作

书接上回,既然有单表,那必然就有一对多,多对多

一对多关系

多表关系中, 通过外键来关联数据
一对多关系中, 外键设置在 多的一方

在这里插入图片描述

通过关系属性来关系/查询数据 操作简单
    1> 需要定义外键
    2> 定义关系属性
    3> 使用关系属性来关联数据

flsk中的一对多

在多的一方需要写一个字段s_g 在其中写上db.ForeignKey(‘grade.id’),参数为一对多的一的一方的主键。这个字段在数据库中是不存在的。

在少的一方需要添加一个relationship字段 students = db.relationship(‘Students’, backref=‘grade’) ,

class Plbic(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64))
    addprice = db.Column(db.String(64))
    top_tp = db.relationship("Book", backref="to_publish")

    def __str__(self):
        return self.name
    def __repr__(self):
        return self.name

class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64))
    price = db.Column(db.Integer)
    pld_id = db.Column(db.Integer, db.ForeignKey(Plbic.id))



    def __str__(self):
        return self.title
    def __repr__(self):
        return self.title

backref为反向查询的关键字

增删改查

@app.route("/")
def index():
    # 增
    # book = Book()
    # book.title = '西游记'
    # book.price = 48.2
    # book.pld_id = 1
    # db.session.add(book)
    # db.session.commit()
    # plbic = Plbic()

    # 删
    # res = Book.query.filter(Book.id ==2).first()
    # db.session.delete(res)
    # db.session.commit()

    # 查
    # res = Plbic.query.filter(Plbic.name =='东京出版社').first().top_tp
    # res = Book.query.filter(Book.title == "三国志").first().to_publish
    # res = Book.query.order_by(Book.price.desc()).first()
    # print(res)
    return 'ss'

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值