>
>
>> query(Job).filter(Job.status == 
>> ‘queued’).filter(~Job.dependencies.any(Dependency.status != ‘done’))
>>
>>
One more thing. Dependency doesn't exist as a class. Job.dependencies is a 
many-to-many association. That's why you probably have to use aliases to 
refer to the status of the dependency Job. I just couldn't get it to work 
though. The basic model:

# many-to-many association table
JobDependency = Table('job_dependency', Base.metadata,
    Column('jobId', Integer, ForeignKey('job.id'), primary_key=True),
    Column('dependsOnJobId', Integer, ForeignKey('job.id'), 
primary_key=True)
)

class Job(Base):
    __tablename__ = 'job'
    
    id = Column(Integer, primary_key=True)
    status = Column(String(20), default='queued', nullable=False)
    
    dependencies = relationship(lambda: Job, 
                                secondary=JobDependency, 
                                primaryjoin=id==JobDependency.c.jobId,
                                
secondaryjoin=id==JobDependency.c.dependsOnJobId,
                                backref='dependencyOf')

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to