查找两个日期之间的对象TinyDB

2024-05-16 09:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用FastAPI尝试tinydb,但我被日期卡住了,tinydb中有没有查找两个日期之间对象的函数,我找不到任何类似Pymongo的$gt等,我尝试了类似的方法,但没有成功

class DateTimeSerializer(Serializer):
    OBJ_CLASS = datetime  # The class this serializer handles

    def encode(self, obj):
        return obj.strftime('%Y-%m-%dT%H:%M:%S')

    def decode(self, s):
        return datetime.strptime(s, '%Y-%m-%dT%H:%M:%S')

serialization = SerializationMiddleware()
serialization.register_serializer(DateTimeSerializer(), 'TinyDate')

db = TinyDB("db.json", storage=serialization)

我从tinydb序列化为它创建了一个中间件,但是当我这样搜索时

@app.get("/search")
async def date_get(date: Optional[str] = None,start_at: Optional[str] = None,
                end_at: Optional[str] = None, query: Query = Depends()):
    if start_at and end_at:
        date_db.search((query.date.strptime("%Y/%m/%d") > datetime.strptime(start_at, "%Y/%m/%d")) & (query.date.strptime("%Y/%m/%d") < datetime.strptime(end_at, "%Y/%m/%d")))

此模式还会引发另一个异常tinydb:Empty query was evaluated

快速总结

  1. 我的数据直接来自抓取(请求),所以我不想重写9-10key:value
  2. 我不想将它们存储为datetime对象除了使用日期搜索之外,还会有不同的端点,所以我不想返回这样的对象datetime.datetime(2010, 1, 1, 12, 0)}

Tags: 对象nonedbdatetimedatedefserializationquery