我正在使用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
答案 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)