fals 一对多关系

一对多关系:

# 主表
class Goods(db.Model):
    __tablename__ = 'goods'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True,comment='id')
    name = db.Column(db.String(500),comment='商品名字')
    price = db.Column(db.Float(8,2),comment='商品价格')
    img  = db.Column(db.String(500),comment='商品图片')
    goods = db.relationship('Xiang',backref='goods')
    def __repr__(self):
        return self.name

class Xiang(db.Model):
    __tablename__ = 'xiang'

    id =   db.Column(db.Integer,primary_key=True,autoincrement=True,comment='id')
    img = db.Column(db.String(500), comment='商品图片')
    name = db.Column(db.String(500), comment='商品名字')
    xiang = db.Column(db.String(500),comment='商品详情信息')
    goods_id = db.Column(db.Integer,db.ForeignKey('goods.id'))
    def __repr__(self):
        return self.name

db.relationship()用于在两个表之间建立一对多关系。例如书中 roles 表中一个 User 角色,可以对应 users 表中多个实际的普通用户。实现这种关系时,要在“多”这一侧加入一个外键,指向“一”这一侧联接的记录。

但是,主表数据删除的时候,如果从表绑定有数据,那就需要把从表中的数据一块给删除掉才可以;

否则会报错:

  raise errorclass(errno, errval)
sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`day0919`.`xiang`, CONSTRAINT `xiang_ibfk_1` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`id`))')
[SQL: DELETE FROM goods WHERE goods.id = %(id_1)s]
[parameters: {'id_1': 3}]

有道词典翻译下大概意思是:

、 '无法删除或更新父行:外键约束失败('daye919')。'xiang', CONSTRAINT 'xiang_ibfk_1'外键('goods_id')引用'goods'('id'))')删除货物的位置。Id = %(id_1) s][参数:id_1:3)][这个错误的背景:https://sqlalche.me/e/14/gkpi)127.Θ.Θ.1 - - [2022年9月19日 21:32:29] “删除 /v1/put/3 、

因为他不会直接联通从表中的数据一同删除所以需要我们自己写,代码来手动删除;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值