Suchen wie bei Sqlalchemy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Guten Tag,

ich habe eine Frage. Bei Sqlalchemy ist es möglich, Funktionen Bedingungen (zum Beispiel name=="abc") zu übergeben.
Wie kann ich solch ein Verhalten in mein eigenes Programm einbinden? Finde das eine sehr attraktive Syntax.

Vielen Dank.

Beste Grüße
sprudel
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

also ich kenne das bei SA nur als Bedingung für Filter(funktionen), mit denen du Datensätze selektierst.

Im "normalen" Programm ist doch nichts anderes als ein

Code: Alles auswählen

if foo=="bar":
    do_something()
Und falls du was anderes meinst- bitte ein Beispiel. :-)

Gruß, noisefloor
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Ne, ich meine zum Beispiel Folgendes:

Code: Alles auswählen

from sqlalchemy import or_
filter(or_(User.name == 'ed', User.name == 'wendy'))
Wenn man das im Programm so eingibt, dürfte ja eigentlich nur True oder False rauskommen (sofern User.name überhaupt im aktuellen Kontext vorhanden ist).
deets

Prinzipiell so:

Code: Alles auswählen



class ColumComparer(object):


    def __init__(self, name):
        self.name = name
        self.other_expression = None

        

    def __eq__(self, other):
        self.other_expression = other
        return self
    

    def __str__(self):
        assert self.other_expression is not None
        return "%s == %r" % (self.name, self.other_expression)


cc = ColumComparer("foo")

print cc == "bar"

Aber ich habe ein bisschen Angst dass du statt SQLAlchemy zu benutzen mal wieder was selbst erfindest...
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@sprudel: Dann frag' ich mal anders - was ist denn das Ziel, also was willst du wie in deiner Applikation erreichen. Das ist mir immer noch nicht klar...

Gruß, noisefloor
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Ich habe noch keinen konkreten Einsatzweck, sondern wollte es nur einmal verstehen, wie sowas funktionieren kann.

Vielen Dank für die Erklärung.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

gut, dann frage ich anders: Was willst du woraus selektieren? Da ist mir nämlich nicht klar...

Wenn du "nur" wissen willst, wie sowas umgesetzt ist, dann lohnt sich wohl der Blick in de SA-Quellcode ;-)

Gruß, noisefloor
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

noisefloor hat geschrieben:Wenn du "nur" wissen willst, wie sowas umgesetzt ist, dann lohnt sich wohl der Blick in de SA-Quellcode ;-)
Der ist allerdings ziemlich komplex für einen Anfänger.
the more they change the more they stay the same
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Eben, deswegen habe ich hier gefragt. SqlAlchemy ist ja nun wirklich ein Großprojekt ;)
Ganz nebenbei: So ein Anfänger bin ich zwischenzeitlich auch nicht mehr, aber doch reiner Hobbyprogrammierer. Trete deswegen in das eine oder andere Fettnäpfchen (die ein oder andere Friteuse auch ganz gerne)..
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

bleibt immer noch die Frage:
noisefloor hat geschrieben:Gut, dann frage ich anders: Was willst du woraus selektieren? Da ist mir nämlich nicht klar...
Gruß, noisefloor
Antworten