文章内容

2020/6/22 16:47:29,作 者: 黄兵

SQLAlchemy 自连接

我们在使用 SQLAlchemy 的时候,经常会遇到自连接,例如:菜单下面有子菜单,类别下面有子类别,还有省下面有城市等,都可以用到自连接。

数据表自关联的一对多关系,典型的就是父亲和子女的关系。我们通过在表中引用父亲的 id 来实现,然后通过反向链接来获取子女的信息。

👇面是一个类与子类的自关联示例:

class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    name_zh = db.Column(db.String(128), unique=True)
    name_en = db.Column(db.String(128), unique=True)
    description_zh = db.Column(db.String(1024), doc='说明')
    description_zh_html = db.Column(db.String(1024), doc='说明')
    keywords = db.Column(db.String(64))
    description = db.Column(db.String(128))
    link_text = db.Column(db.String(32), unique=True, index=True)
    child_category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
    articles = db.relationship('Article', backref='category', lazy='dynamic')
    categories = db.relationship('Category', remote_side=[id], backref='categories')

一个父类别下面可能有多个子类别,通过子类别也可以查询父类别。


参考资料:

1、SQLAlchemy 数据表自关联


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - SQLAlchemy 自连接

分享到:

发表评论

评论列表