Hallo! Ich schon wieder
Wie kann man Operatoren in Z SQl Methoden als Argument übergeben bzw. Queries per (zum Beispiel) String an eine Methode übergeben?
Dies benötigt man ja z.B. wenn man bei einer änderbaren (auf- und absteigenden) Listensortierung nur ein DESC hinter das ORDER BY hängen will. Sonst muss man ja für jeden Murks immer eine Z SQL Methode anlegen!
---
Wozu ich das brauche:
Ich schreibe ein Verwaltungsprogramm, mit welchem Flugaufzeichnungen unter anderem individuell ausgewertet werden können sollen. Der Anwender soll sich eigene Auswertungen zusammenschnitzen können, also zum Beispiel:
Zeige mir alle Flüge im Zeitraum X, wo Pilot Y mit Luftfahrzeug Z geflogen ist und eine Flugdauer von A bis B Minuten vorlag etc.
Hierfür muss ich immer die gleiche MySQL Tabelle auslesen, doch völlig verschiedene Argumente aber vor allem verschiedene Opratoren > oder < oder <= oder oder oder verwenden.
Gibt es da einen Trick oder muss man vorher per Script immer eine temporäre Z SQL Methode anpassen, um dann eine Anfrage darauf loslassen?
Ist denke ich ein wichtiger Punkt, da sonst unzählig viele Z SQL Methoden nötig wären.
Also dann gute Nacht
JR
variable Z SQL Methoden in Zope bzw. Plone verwenden
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jamil!JR hat geschrieben:z.B. wenn man bei einer änderbaren (auf- und absteigenden) Listensortierung nur ein DESC hinter das ORDER BY hängen will.
Z-SQL Methoden sind DTML-Methoden, die zusätzlich auch noch ein paar Funktionen besitzen um gegen "SQL-Injection" vorzubeugen.
Du kannst also DTML für logische Verzweigungen verwenden:
Code: Alles auswählen
SELECT
vorname,
nachname
FROM
addresses
WHERE
<dtml-sqltest column=age op=ge name=min_age type=int>
<dtml-if expr="order_by">
ORDER BY
<dtml-sqlvar order_by type=string>
</dtml-if>
Alles über ZSQL-Methoden findest du im ZopeBook, wenn du nach "zsql" suchst. http://www.zope.org/Documentation/Books/ZopeBook/
lg
Gerold
Edit: dtml-sqltest ein wenig aufgebessert.
Zuletzt geändert von gerold am Donnerstag 6. April 2006, 09:46, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo Gerold!
Mit dem <dtml-if>-tag lässt sich tatsächlich etwas mit anstellen. Eine andere Idee für Auswertungen ist, dass ich dem Anwender den Download einer Datendatei anbiete, welche ich anhand einer Tabelle generiere.
Das Erzeugen einer neuen Datei habe ich so geschafft:
Doch wie lösche ich die Datei wieder? Wie kann ich ich die Eigenschaften (Title, Inhalt etc.) bearbeiten?
Grüße und frohe Ostern nachträglich
JR
Mit dem <dtml-if>-tag lässt sich tatsächlich etwas mit anstellen. Eine andere Idee für Auswertungen ist, dass ich dem Anwender den Download einer Datendatei anbiete, welche ich anhand einer Tabelle generiere.
Das Erzeugen einer neuen Datei habe ich so geschafft:
Code: Alles auswählen
context.invokeFactory(id='datei', type_name='File')
Grüße und frohe Ostern nachträglich
JR
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi JR!JR hat geschrieben:Doch wie lösche ich die Datei wieder? Wie kann ich ich die Eigenschaften (Title, Inhalt etc.) bearbeiten?
File-Objekte habe irgendwie eine komische Sonderstellung. Ich weiß nicht, wie man diese von einem Python-Skript aus editieren kann. Deshalb schlage ich die Strategie "Erstellen und Löschen" vor. Beim Erstellen kannst du den Inhalt mit angeben. Jedoch nicht, wenn du das *invokeFactory* vom Plone verwendest.
Erstellen:
Code: Alles auswählen
container.manage_addFile(
"hallowelt.txt",
file = "Servus aus Tirol",
title = "Meine Hallo Welt Datei",
content_type = "text/plain"
)
Code: Alles auswählen
container.manage_delObjects("hallowelt.txt")
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo Gerold,
danke schon mal für den Tipp. Das nachträgliche Ändern des Inhalts muss irgendwie gehen
So kann ich dem Anwender Daten mundgerecht zum Download zur Verfügung stellen.
Also ich tüftel mal rum und durchsuche die vorhandenen Plonescripts...
Gruß
Jamil
danke schon mal für den Tipp. Das nachträgliche Ändern des Inhalts muss irgendwie gehen
So kann ich dem Anwender Daten mundgerecht zum Download zur Verfügung stellen.
Also ich tüftel mal rum und durchsuche die vorhandenen Plonescripts...
Gruß
Jamil