Oder wie mache ich das Ding funktionieren?
Ich habe ein Interval-Objekt:
%Vor%Und eine Aufgabe:
%Vor%Fügen Sie natürlich den typischen Setup-Code hinzu.
Wenn ich versuche, session.query(Task).filter(Task.hours_spent > 3).all()
Ich bekomme NotImplementedError: <built-in function getitem>
von der sum(i.hours_spent...
-Zeile.
Ich schaute also diesen Teil des Dokumentation und theoretisiert, dass es vielleicht eine Möglichkeit gibt, dass ich etwas schreiben kann, das tun wird, was ich will. Dieser Teil sieht auch so aus, als könnte er nützlich sein und ich werde es mir ansehen, während ich auf eine Antwort hier warte;)
SQLAlchemy ist nicht intelligent genug, um SQL-Ausdrucksbaum aus diesen Operanden zu erstellen, Sie müssen explizit propname.expression
decorator verwenden, um es bereitzustellen. Aber dann kommt ein anderes Problem: Es gibt keinen portablen Weg, um Intervall in Stunden in Datenbank zu konvertieren. Sie würden TIMEDIFF
in MySQL, EXTRACT(EPOCH FROM ... ) / 3600
in PostgreSQL usw. verwenden. Ich empfehle, Eigenschaften zu ändern, um stattdessen timedelta
zurückzugeben und Äpfel mit Äpfeln zu vergleichen.
Die letzte Abfrage lautet:
%Vor%was zu (im PostgreSQL-Backend) übersetzt:
%Vor%Für ein einfaches Beispiel der Koaleszenzfunktion von SQLAlchemy kann dies hilfreich sein: Behandlung von null Werte in einer SQLAlchemy-Abfrage - äquivalent zu isnull, nullif oder coalesce .
Hier sind ein paar Schlüsselzeilen des Beitrags:
%Vor%Tags und Links python sqlalchemy null-coalescing-operator