2016-11-15 63 views
1

我有一些看起来像这样:如何在sqlalchemy关系中使用日期(时间)算术?

from sqlalchemy import sa 
from sqlalchemy.ext.declarative import declarative_base 

metadata = sa.MetaData(schema='myschema') 
Base = declarative_base(metadata=metadata) 


class MyThing(Base): 
    __tablename__ = 'thing' 

    ... 
    id = sa.Column('id', sa.Integer, primary_key=True) 

    recent_things = sa.orm.relationship(
     'OtherThing', 
     primaryjoin="and(MyThing.id==OtherThing.thing_id," 
     "OtherThing.timestamp >= now - 60)" 
    ) 



class OtherThing(Base): 
    __tablename__ = 'others' 

    ... 
    thing_id = sa.Column('thing_id', sa.Integer, nullable=False) 
    timestamp = sa.Column('timestamp', sa.DateTime) 

不幸的是,这是行不通的。我也试过>= remote('now - 60')和其他一些变化。各种例外都会失败。

如何正确设置此查询来执行我想要的操作?我发现了一个暗示函数的结果,但它似乎不再是sqlalchemy的一部分。

回答