0

我正在使用 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
4

1 回答 1

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)
于 2016-12-28T19:58:38.740 回答