SQLAlchemy: Filtern von Datumsfeldern
In SQLAlchemy erfordert das Filtern basierend auf Datumsfeldern sorgfältige Überlegungen. Lassen Sie uns untersuchen, wie Sie richtig zwischen zwei Daten filtern, um Daten innerhalb eines bestimmten Altersbereichs zu extrahieren.
Modellieren des Datumsfelds
Angenommen, Sie haben ein Benutzermodell mit einem Geburtstagsfeld Als Datumsdatentyp definiert, wird er in der Datenbank als Zeichenfolge im Format „JJJJ-MM-TT“ dargestellt, z. B. '1987-01-17'.
Filtern nach Altersgruppe
Um alle Benutzer innerhalb einer bestimmten Altersgruppe auszuwählen, sagen wir 18 bis 30 Jahre, müssen wir Folgendes tun Vergleichen Sie ihre Geburtstage mit den entsprechenden Daten, die den Anfang und das Ende dieses Bereichs darstellen.
Falsch Ansatz
Ihre erste Abfrage enthält, obwohl konzeptionell korrekt, einen Tippfehler, der die Ungleichheitssymbole umkehrt:
query = DBSession.query(User).filter( and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17') )
Diese Abfrage schließt alle Datensätze aus, da nach Benutzern gesucht wird, deren Geburtstage beide sind größer oder gleich „17.01.1988“ und kleiner oder gleich „17.01.1985“ ist unmöglich.
Richtiger Ansatz
Um richtig zu filtern, kehren Sie einfach die Ungleichheitssymbole um:
qry = DBSession.query(User).filter( and_(User.birthday <= '1988-01-17', User.birthday >= '1985-01-17') )
Alternativ können Sie den integrierten Methode between():
qry = DBSession.query(User).filter(User.birthday.between('1985-01-17', '1988-01-17'))
Beide Ansätze geben Benutzer zurück, deren Geburtstage in den angegebenen Datumsbereich fallen, der den gewünschten darstellt Altersintervall.
Das obige ist der detaillierte Inhalt vonWie filtere ich SQLAlchemy-Datumsfelder für Altersbereichsabfragen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!