首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlalchemy中的联合加载/紧急加载整个(子)-graphs

sqlalchemy中的联合加载/紧急加载整个(子)-graphs
EN

Stack Overflow用户
提问于 2010-10-05 20:15:06
回答 1查看 1.1K关注 0票数 2

假设我有一个可以依赖于其他TasksTask对象。有没有一种方法可以明智地急切/联合加载给定任务集的所有子任务?

代码语言:javascript
复制
class Task(DeclarativeBase):
    __tablename__ = 'task'

    task_id = Column(Integer, primary_key=True)
    name = Column(String, unique=True)

    def add_dependencies(self, *tasks):
        for task in tasks:
            TaskDependency(dependent=self, dependency=task)
        return self

    @property
    def dependencies(self):
        return [x.dependency for x in self.dependency_edges]

    @dependencies.setter
    def dependencies(self, what):
        "Note: adds dependencies, doesn't remove them" 
        self.add_dependencies(*what)

    @property        
    def dependents(self):
        return [x.dependent for x in self.dependent_edges]

class TaskDependency(DeclarativeBase):
    __tablename__ = 'task_dependency'

    dependent_id = Column(Integer, ForeignKey(Task.task_id), primary_key=True)                        
    dependency_id = Column(Integer, ForeignKey(Task.task_id), primary_key=True)

    dependent = relationship(Task, primaryjoin=dependent_id == Task.task_id, 
                             backref='dependent_edges')

    dependency = relationship(Task, primaryjoin=dependency_id == Task.task_id, 
                              backref='dependency_edges')

def example_task_maker():
    make_cheese = Task(
        name="MAKE_CHEESE",
        dependencies=[
            Task(name="MILK_COWS",
                dependencies=[
                    Task(name="BUY_COWS")
                ]),
        ]
    )


def load_task()
    # How to eagerly load the whole task tree here?
    DBSession.query(Task).filter(name="MAKE_CHEESE").all()
EN

回答 1

Stack Overflow用户

发布于 2010-10-05 22:21:28

阿。我实际上想要的是一个邻接表,这里有一些例子,我错过了:

http://docs.sqlalchemy.org/en/latest/orm/relationships.html#adjacency-list-relationships

我相信这会实现我想要的效果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3863508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档