class Comment(db.Model): """评论""" id = db.Column(db.Integer, primary_key=True) # 评论编号 content = db.Column(db.Text, nullable=False) # 评论内容 parent_id = db.Column(db.Integer, db.ForeignKey("comment.id")) # 父评论id parent = db.relationship("Comment", remote_side=[id]) # 自关联 followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) ) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) followed = db.relationship( # User 表示关系当中的右侧实体(将左侧实体看成是上级类) # 由于这是自引用关系,所以两侧都是同一个实体。 'User', # secondary 指定了用于该关系的关联表 # 就是使用我在上面定义的 followers secondary=followers, # primaryjoin 指明了右侧对象关联到左侧实体(关注者)的条件 # 也就是根据左侧实体查找出对应的右侧对象 # 执行 user.followed 时候就是这样的查找 primaryjoin=(followers.c.follower_id == id), # secondaryjoin 指明了左侧对象关联到右侧实体(被关注者)的条件 # 也就是根据右侧实体找出左侧对象 # 执行 user.followers 时候就是这样的查找 secondaryjoin=(followers.c.followed_id == id), # backref 定义了右侧实体如何访问该关系 # 也就是根据右侧实体查找对应的左侧对象 # 在左侧,关系被命名为 followed # 在右侧使用 followers 来表示所有左侧用户的列表,即粉丝列表 backref=db.backref('followers', lazy='dynamic'), lazy='dynamic' ) sub_group = db.Table('sub_group', db.Column('parent_id', db.Integer, db.ForeignKey('case_group.id')), db.Column('child_id', db.Integer, db.ForeignKey('case_group.id')) ) class CaseGroup(db.Model): id = db.Column(db.Integer, primary_key=True) group_name = db.Column(db.String(30)) sub = db.relationship( 'CaseGroup', secondary=sub_group, primaryjoin=(sub_group.c.parent_id == id), secondaryjoin=(sub_group.c.child_id == id), backref=db.backref('parent', lazy=True), lazy=True ) case = db.relationship('Case', backref='case_group', lazy=True) class Case(db.Model): id = db.Column(db.Integer, primary_key=True) case_name = db.Column(db.String(30)) group_id = db.Column(db.Integer, db.ForeignKey('case_group.id')) class CaseStep(db.Model): id = db.Column(db.Integer, primary_key=True) step_name = db.Column(db.String(60)) case_id = db.Column(db.Integer, db.ForeignKey('case.id'))
flask sqlalchemy数据库关系表结构
最新推荐文章于 2022-09-24 15:26:53 发布
这段内容描述了数据库中评论、用户、案例组和案例之间的关系模型。`Comment`类包含了评论内容及其层级关系,`User`类展示了用户关注关系,`CaseGroup`类定义了案例组的子组和案例的关联,而`Case`类则关联了具体的测试步骤。这些模型为数据存储和查询提供了结构化的框架。
摘要由CSDN通过智能技术生成