我有一些看起来像这样的东西:
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')
和其他一些变体。每个都失败,有各种例外。
如何正确设置此查询以执行我想要的操作?我发现了一个表明ADDDATE
函数的结果,但它似乎不再是sqlalchemy的一部分了。
答案 0 :(得分:1)
尝试在表达式中使用func.now()而不是现在:
recent_things = sa.orm.relationship(
'OtherThing', primaryjoin="and(MyThing.id==OtherThing.thing_id,"
"OtherThing.timestamp >= func.now() - 60)"
)
以下是func:http://docs.sqlalchemy.org/en/rel_0_9/core/functions.html#sqlalchemy.sql.functions.func
的文档页面