sqlalchemy建立一对多的关系及注意事项,并且如何创建多个关联外键的方法!

定义复合外键的唯一方法:https://docs.sqlalchemy.org/en/13/core/constraints.html?highlight=foreignkey#metadata-foreignkeys

 

 

注意:使用flask-sqlalchemy复合外键定义方法ForeignKeyConstraint使用报错,回头单独使用sqlalchemy在测试一下

 

使用flask建立一对多的关系建立原理【对应一个外键】:

"""
    功能:建立一个一对多的关系:ParentModel 对 [ChildAModel ,ChildBModel]
    作用:
        1、子自动查询关联的父类实例:建立了关联之后,在ChildAModel和ChildBModel对象中直接可以访问parent_model关联的父类对象
        2、父自动查询关联的子类实例:在ParentModel可以直接访问child_a_model和child_b_model实例
"""


class ParentModel(Base):
    # 用户地址【必须唯一】
    address = db.Column(db.String(255), nullable=False, unique=True)
    # 推荐人地址【数据库的推荐地址是可以重复的,一个人可以推荐无数个】
    referrer_address = db.Column(db.String(255), nullable=False)
    # 建立表一对一双向关系表
    child_a_model = db.relationship(
        "ChildAModel", backref='parent_model', lazy=True)
    child_b_model = db.relationship(
        "ChildBModel", backref='parent_model')


# 关联一个外键的方法
class ChildAModel(Base):
    address = db.Column(db.String(255), db.ForeignKey(
        'parent_model.address'), nullable=False, unique=True)
    # 【非常重要】这里的推荐地址在添加的时候自动从ReferrerRelationNetworkModel获取,会强制覆盖表单传入的
    referrer_address = db.Column(db.String(255), nullable=False)


# 关联一个外键的方法
class ChildBModel(Base):
    address = db.Column(db.String(255), db.ForeignKey(
        'parent_model.address'), nullable=False, unique=True)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值