variable Z SQL Methoden in Zope bzw. Plone verwenden

Django, Flask, Bottle, WSGI, CGI…
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

variable Z SQL Methoden in Zope bzw. Plone verwenden

Beitragvon JR » Mittwoch 5. April 2006, 23:22

Hallo! Ich schon wieder :oops:

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: variable Z SQL Methoden in Zope bzw. Plone verwenden

Beitragvon gerold » Donnerstag 6. April 2006, 08:17

JR hat geschrieben:z.B. wenn man bei einer änderbaren (auf- und absteigenden) Listensortierung nur ein DESC hinter das ORDER BY hängen will.

Hi Jamil!

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=]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>[/code]
Ich verwende DTML so selten, dass ich nicht weiß, ob dieses Beispiel so funktionieren wird. -- Musst du selber ausprobieren. :roll:

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.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 6. April 2006, 09:23

Hi Gerold,

werd das mal am Abend ausprobieren, dank dir schon mal :-)

Grüße dich Jamil
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Objekt anlegen

Beitragvon JR » Dienstag 18. April 2006, 11:07

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:

Code: Alles auswählen

context.invokeFactory(id='datei', type_name='File')


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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Objekt anlegen

Beitragvon gerold » Dienstag 18. April 2006, 11:44

JR hat geschrieben:Doch wie lösche ich die Datei wieder? Wie kann ich ich die Eigenschaften (Title, Inhalt etc.) bearbeiten?

Hi JR!

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"
)


Löschen:

Code: Alles auswählen

container.manage_delObjects("hallowelt.txt")

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Dienstag 18. April 2006, 11:49

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder