SQLAlchemy: in_ mit gemappten Objekten

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

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?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

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
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Vielleicht solltest du im Traceback mal ermitteln, von wo genau der `NotImplementetError` ausgeht.
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Antworten