AND-OR Bedingungen umschreiben
Verfasst: Donnerstag 5. Juni 2008, 02:47
Hi!
Ich dachte mir mal so, dass ja bei Datenbankenanfragen es ja sehr verschraenkte and-or-Bedinungen gibt, am besten dann noch mit Klammern. Da behaelt man selbst schwer den Ueberblick, und als ich das mit Python umsetzen wollte, sass ich da erst mal vor einer Wand. Mein Ziel war naemlich, dass in eine Liste von and-Bedingungen umzuschreiben.
Also Beispiel:
Dies kann man sich als Bruchstueck aus zum Beispiel SQL vorstellen.
Das sollte dann gerne zu dem hier oder etwas aehnlich Uebersichtlichem werden:
Den zweiten Wert im Tuple hab ich wieder in einen Tuple getan, damit es auch moeglich ist, mehrere Bedingungen zu stellen, also ueber eine AND-Verknuepfung. Das erste waer dann der Tuple zum Buendeln der OR-Verknuepfungen, der zweite zum Buendeln der AND-Verknuepfung und der Dritte schliesst dann den Spaltennamen mit dem/den Wert(en) zusammen. Das ist jetzt von mir frei erfunden, falls es bessere Ideen gibt, sofort posten!
Das ganze soll aber nicht nur das hier, sondern auch viel kompliziertere Sachen loesen, wie auch zum Beispiel:
Das wuerde ja zu dem hier werden:
Gibt es sowas schon in Python? Muesste es ja eigentlich, oder? Wo koente ich denn da mal in einem guten OpenSource-Projekt nachkucken?
Gibt es dafuer bereits gute Module, mit denen das leicht umsetzbar ist? Muesste ich das wirklich mit RE auseinanderbasteln oder kann ich das implementierte aus Python benutzen? Also in Python selbst gibt es ja auch schon diese umstaendlichen AND-OR-Bedingungen.
Mein Ding ist halt, dass ich zwar den and-or-Kram auch ueber exec ausfuehren koennte, ich aber der Quelle nicht vertrauen kann, daher das ziemlich gefaehrlich ist.
Schon mal vielen Dank fuer die Antworten! Falls es noch irgendwelche Fragen gibt, stellt sie!
Ich dachte mir mal so, dass ja bei Datenbankenanfragen es ja sehr verschraenkte and-or-Bedinungen gibt, am besten dann noch mit Klammern. Da behaelt man selbst schwer den Ueberblick, und als ich das mit Python umsetzen wollte, sass ich da erst mal vor einer Wand. Mein Ziel war naemlich, dass in eine Liste von and-Bedingungen umzuschreiben.
Also Beispiel:
Code: Alles auswählen
IF A = 13 OR B = 'house'
Das sollte dann gerne zu dem hier oder etwas aehnlich Uebersichtlichem werden:
Code: Alles auswählen
(((A, (13,))), ((B, ('house',))))
Das ganze soll aber nicht nur das hier, sondern auch viel kompliziertere Sachen loesen, wie auch zum Beispiel:
Code: Alles auswählen
IF (A = 45 OR C = 23) AND (B = 48 OR D = 59)
Code: Alles auswählen
(
((A, (45,)), (B, (48,)),
((A, (45,)), (D, (59,)),
((C, (23,)), (B, (48,))
((C, (23,)), (D, (59,))
)
Gibt es dafuer bereits gute Module, mit denen das leicht umsetzbar ist? Muesste ich das wirklich mit RE auseinanderbasteln oder kann ich das implementierte aus Python benutzen? Also in Python selbst gibt es ja auch schon diese umstaendlichen AND-OR-Bedingungen.
Mein Ding ist halt, dass ich zwar den and-or-Kram auch ueber exec ausfuehren koennte, ich aber der Quelle nicht vertrauen kann, daher das ziemlich gefaehrlich ist.
Schon mal vielen Dank fuer die Antworten! Falls es noch irgendwelche Fragen gibt, stellt sie!