我正在尝试使用 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-serialization为它创建了一个中间件,但是当我这样搜索时
@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
快速总结:
- 我的数据直接来自抓取(请求)所以我不想重写 9-10
key:value
对 - 我不想将它们存储为日期时间对象,除了使用日期搜索之外,会有不同的不同端点,所以我不想返回这样的对象
datetime.datetime(2010, 1, 1, 12, 0)}