Je suis un peu confus au sujet du filtrage dans SQLAlchemy.
J'essaie actuellement de filtrer les entrées de plus de 10 semaines, j'ai donc
current_time = datetime.datetime.utcnow()
potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))
Cependant, la potential.count()
renvoie toujours 0
.
Ma théorie est que je n'utilise pas correctement l'instruction de filtrage parce que lorsque j'essaie d'utiliser une colonne qui n'est pas de type Column(DateTime())
mais à la place
Colonne (chaîne (250))
comme
potential = session.query(Subject).filter(Subject.string_field < current_time - datetime.timedelta(weeks=10))
SQLAlchemy ne se plaindra toujours pas.
Aussi, quand je fais une vérification manuelle avec
curr_time - session.query(Subject).first().time > datetime.timedelta(weeks=10)
J'obtiens True
ce qui implique que le nombre ne doit pas être 0
.
Suis-je en train de manquer quelque chose d'évident? Toute aide serait appréciée.
Si vous changez le <
à un >
vous pouvez obtenir tous les sujets au cours des dix dernières semaines:
current_time = datetime.datetime.utcnow()
ten_weeks_ago = current_time - datetime.timedelta(weeks=10)
subjects_within_the_last_ten_weeks = session.query(Subject).filter(
Subject.time > ten_weeks_ago).all()
Le filtre génère une clause WHERE
qui inclut résultats correspondant à la clause. Les résultats ne sont donc pas "filtrés" mais sont inclus.