Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
Encuentra objetos entre dos fechas TinyDB

Estoy probando tinydb con FastAPI, pero me quedé atascado con las fechas. ¿Hay una función para encontrar objetos entre dos fechas en TinyDB? No pude encontrar ninguno como $gt de Pymongo, etc. Intenté algo como esto pero no lo hice funcionó.

 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)

Creé un middleware para él a partir de la serialización de tinydb, pero cuando busco así

 @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")))

Además, este patrón arroja otra excepción tinydb:Empty query was evaluated

Resumen rápido :

  1. Mis datos provienen directamente del raspado ( solicitudes ), por lo que no quiero volver a escribir 9-10 key:value
  2. No quiero almacenarlos como objeto de fecha y hora, habrá diferentes puntos finales diferentes además de buscar con fecha, por lo que no quiero devolver un objeto como este datetime.datetime(2010, 1, 1, 12, 0)}
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si guarda sus fechas en TinyDB como tiempo desde la época usando:

 import datetime datetime.datetime(year=2022, month=1, day=15).timestamp() # 1642204800.0

Puede consultar fácilmente sus fechas ya que solo está consultando flotadores

 import datetime from tinydb import TinyDB, Query db = TinyDB('db.json') db.insert_multiple([ { 'id': 1, 'date': datetime.datetime( year=2022, month=1, day=5 ).timestamp() }, { 'id': 2, 'date': datetime.datetime( year=2022, month=1, day=15 ).timestamp() } ]) q = Query() print(db.search( (q.date < datetime.datetime( year=2022, month=1, day=10 ).timestamp()) & (q.date > datetime.datetime( year=2022, month=1, day=4 ).timestamp()) )) # prints: [{'id': 1, 'date': 1641340800.0}]

La consulta de búsqueda se puede acortar a:

 datetime.datetime( year=2022, month=1, day=4 ).timestamp() < q.date < datetime.datetime( year=2022, month=1, day=10 ).timestamp()
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda