[英]Removing child entity without setting parent_id to NULL in SQLAlchemy
[英]SQLAlchemy Adjacency List - Constrain parent_id not equal to ID
我在 SQL Alchemy 中實施鄰接列表,我正在工作。 這是 Node.js 的基本示例。 我有它的工作。
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
還是可以在列上設置數據庫約束。
您可以使用@validates
或 db 約束。 約束看起來像這樣:
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'),)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.