SQLAlchemy查询使用筛选条件之外的值返回结果

时间:2013-09-28 17:11:11

标签: sqlalchemy

我正在使用SQLAlchemy访问SQLite数据库。我已经使用下面的事件ORM定义的50,000个条目填充了数据库。当我查询数据库并过滤“时间”大于某个值时,我会在请求的时间之前始终获得带有时间值的结果 我如何制作查询,以便根据时间正确过滤?

这是我的查询代码:

query = session.query(Event)
query = query.filter(Event.time > starttime)

这是事件ORM

Base = declarative_base()

class Event (Base):
  __tablename__ = 'events'
  eventid = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
  time = sqlalchemy.Column(sqlalchemy.Integer)
  value = sqlalchemy.Column(sqlalchemy.Float)
#end class

1 个答案:

答案 0 :(得分:1)

您的模型Event.time。是Integer Column如果要按日期时间对象进行过滤,则必须将使用日期时间对象的列更改为过滤。

from sqlalchemy import func
from dateutil import tz

time = Column(DateTime(timezone=True), nullable=False,
                              server_default=func.now())
starttime = datetime.datetime.now(tz=tz.tzlocal()) # local timezone

query = session.query(Event).filter(Event.time > starttime)