【问题标题】:SQLAlchemy Adjacency List - Constrain parent_id not equal to IDSQLAlchemy 邻接列表 - 约束 parent_id 不等于 ID
【发布时间】:2020-12-12 00:43:10
【问题描述】:

我正在使用的 SQL Alchemy 中实现邻接列表。这是 Node.js 的基本示例 here。我有它的工作。

class Node(Base):
    __tablename__ = 'node'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('node.id'))
    data = Column(String(50))
    children = relationship("Node")

但是,我想在 parent_id != id.也就是说,一行不能是它自己的父行。我不确定如何执行此操作。我需要使用@validates 还是我可以在列上设置的数据库约束。

【问题讨论】:

    标签: python database sqlalchemy constraints


    【解决方案1】:

    您可以使用@validates 或数据库约束。约束看起来像这样:

    import sqlalchemy as sa
    
    class Node(Base):
        __tablename__ = 'node'
        id = sa.Column(sa.Integer, primary_key=True)
        parent_id = sa.Column(sa.Integer, sa.ForeignKey('node.id'))
        data = sa.Column(sa.String(50))
        children = orm.relationship("Node")
    
        __table_args__ = (sa.CheckConstraint('parent_id != id'),)
    

    【讨论】:

    • 谢谢。我能够添加一个 @validates 方法,但我会牢记 CheckConstraint 以备将来使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2021-01-08
    • 2014-04-02
    • 2016-08-22
    • 1970-01-01
    相关资源
    最近更新 更多