我有以下Table
代表时间线的模型。
class TimeRange(Base):
__tablename__ = "time_line"
record_id = Column(Integer, primary_key=True)
level = Column(String, nullable=False) # e.g. "Point", "Range"
content = Column(String, nullable=False)
language_marker = Column(String) # this one column is optional and needs to be queried
immediate_parent_id = Column(Integer, ForeignKey('time_line.record_id'))
child_timelines = relationship('TimeRange', backref=backref('parent_timeline', remote_side=[record_id]))
language_marker
Column 是需要以递归方式查询的列。并不是所有的记录都有这样的属性,业务逻辑是:沿着从根到子时间线的层次谱系,至少有一级的TimeRange
实例带有这样的属性,最底层的应该返回。这有点像级联样式表,如果TimeRange
对象本身没有这样的属性,只需往上一层看,util 找到了一层,最后定义的样式获胜。
我应该研究什么技术方向来实现这样的查询?我正在使用 SQLAlchemy,后端是 SQLite。谢谢。