一对多关系:
# 主表
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 、

2168

被折叠的 条评论
为什么被折叠?



