Seite 1 von 1

SQLAlchemy: in_ mit gemappten Objekten

Verfasst: Mittwoch 30. April 2008, 18:12
von Jan-Peer
Hallo,

ich stecke mal wieder bei SQLAlchemy fest. Ich habe mir mittels Alc eine Liste von Artikeln besorgt. Jetzt möchte ich aus der Datenbank eine Liste von Verkäufen filtern, die diese Artikel beinhalten.

Code: Alles auswählen

session.query(SalesPos).filter(SalesPos.article.in_(artikelliste))
Das scheint leider nicht zu funktionieren ("NotImplementedError"). Ich werde jetzt einen anderen Ansatz über relations verfolgen, frage mich aber, ob es nicht noch eine schönere Lösung mit einem Filter gibt. Hat jemand von euch eine Idee?

Verfasst: Donnerstag 1. Mai 2008, 14:23
von Y0Gi
Bei mir funktioniert so etwas. Ich setze allerdings nicht `session.query(Entity)` ein, sondern `Entity.query` - daran sollte es allerdings nicht liegen.

P.S.: Wie bist du auf "Alc" als Abkürzung gekommen? Das hört sich nach Alkohol an; "Alch" könnte ich ja verstehen. Am gängigsten scheint übrigens "SA" zu sein, spricht sich natürlich nicht so gut.

Verfasst: Donnerstag 1. Mai 2008, 14:32
von Jan-Peer
Darauf gekommen- eigentlich nur durch Weglassen einer großen Menge von Buchstaben. Bei "SA" drängen sich mir auch ein paar unangenehme Assoziationen auf ... dann schon lieber den Alkohol :wink:

Ansonsten bin ich auch noch nicht weiter. Ich hab das Problem jetzt erst einmal umgangen und habe mir vorgenommen, es bei Gelegenheit durch ausgiebiges Testen weiter zu erforschen. Entity.query werde ich dann auch einmal ausprobieren, vielleicht geht das ja.

Vielen Dank und bis zum nächsten Mal

Verfasst: Donnerstag 1. Mai 2008, 14:59
von Y0Gi
Vielleicht solltest du im Traceback mal ermitteln, von wo genau der `NotImplementetError` ausgeht.

Verfasst: Donnerstag 1. Mai 2008, 15:05
von Jan-Peer
Anscheinend wirklich vom 'in_'. Ich vermute (ohne es jetzt getestet zu haben), daß es mit einer Liste von Strings gehen würde, und daß er nur mit einer Liste von Objekten Probleme hat. Aber wie gesagt - ich bräuchte ein bisschen Zeit, um das alles ein wenig genauer auszuloten, nur habe ich die im Moment nicht.

Verfasst: Freitag 2. Mai 2008, 10:18
von Y0Gi
Achso. Ich habe das bisher mit Integern versucht; Strings sollten gehen und möglicherweise `datetime`-Objekte auch. Wenn du Objekte eigener Klassen verfütterst, würde es das wohl erklären.