Kann man MySQL-Datenbanken einbinden?
Zielgruppe
- Portalmanager
Voraussetzungen
System
- Installation des Zope-Produkts Zope MySQL Database Adapter und des MySQL-python-packages durch den Zope-Systemadministrator (siehe doku_mysql_sysadmins) -> erledigt
- Installation des Plone-Products DynamicDocument auf der eigenen Plone site durch den Portalmanager (wird in Kürze auf dem production-server zur Verfügung stehen)
Rechte
- manager in Plone-Instanz
Einrichten eines Datenbankadapters
- Anmelden als Portalmanager und ins ZMI-root-Verzeichnis der plone site wechseln
- Hinzufügen einer 'Z MySQL Database Connection'
- ID eintragen unter der der Datenbankadapter erreichbar sein soll
- Eintragen der Datenbankverbindungsdaten im 'Database Connection String' in der Form
[+/-]database[@host[:port] ] [user [password [unix_socket] ] ]
Z.B.:meinedb@mysql1.ruf.uni-freiburg.de meinuseraccount meinpasswort
- Zum Testen, ob alles geklappt hat, einfach den Adapter auswählen und z.B. mit dem letzten tab Browse die Datenbankdaten durchstöbern.
Darstellung von Daten aus einer MySQL-Datenbank
- Im ersten Schritt müssen hierzu mit dem Zope-Produkt ZSQLMethods im ZMI die benötigten SQL-Befehle als Zope-Objekte eingerichtet werden.
- Im zweiten Schritt kann dann mit tal oder python in einem DynamicDocument in Plone auf die SQL-Zope-Objekte und somit auf die Daten zugegriffen werden.
Eine ausführliche Anleitung mit Beispielen auch für dynamische Abfragen ist im Zope Book zu finden -> http://zope.org/Documentation/Books/ZopeBook/2_6Edition/RelationalDatabases.stx
Allerdings ist hier alles auf DTML-Basis erläutert, was bei den ZSQL-Methoden kein Problem darstellt in Plone DynamicDocuments aber nicht verwendet werden kann (DTML-Befehle können aber in der Regel alle durch tal-Befehle ersetzt werden).
Um den Einstieg zu erleichtern, wird im Folgenden ein einfaches Beispiel aufgeführt, das tal in einem Plone DynamicDocument verwendet. Für die meisten Anwendungen dürfte dieses Beispiel bereits ausreichen.
Wer tiefer in die Materie einsteigen möchte, sei auf die spärlichen Quellen im Internet (s.u.) verwiesen :-(
Beispiel: Eine einfache Auflistung von Daten in einer Tabelle (statische Abfrage)
Erster Schritt: Erstellen der ZSQL-Methode:
- Um die Daten aus der MySQL-DB auszulesen, muss zuerst eine ZSQL-Methode im ZMI erstellt werden -> Add 'Z SQL Method'.
- Als 'Connection ID' wählen Sie Ihren vorher angelegten Datenbankadapter aus.
- Das 'Arguments'-Feld bleibt leer.
- In das freie Feld darunter geben Sie jetzt Ihre SQL-Abfrage ein
bspw.: 'SELECT emp_id, first, last, salary FROM employees'. - Nun nur noch abspeichern und am Besten gleich testen -> 'Change and Test' und dann 'Submit Query'. Jetzt sollten Sie das Ergebnis Ihrer Abfrage angezeigt bekommen.
Zweiter Schritt: Erstellen eines DynamicDocuments in Plone
- Wechseln Sie in die Plone-Ansicht und erstellen Sie ein DynamicDocument
- Für eine einfache Darstellung Ihrer Daten in Tabellenform geben Sie im Im Edit-Bereich folgenden HTML-/tal-Code ein:
<table border="1" cellpadding="3"> <tr> <th>employee ID</th> <th>last name</th> <th>first name</th> <th>salary</th> </tr> <tr tal:repeat="row here/id_ihrer_zsql-methode"> <td tal:content="row/emp_id">emp_id</td> <td tal:content="row/last">last</td> <td tal:content="row/first">first</td> <td tal:content="row/salary">salary</td> </tr> </table>
Jetzt müssen Sie nur noch die id_ihrer_zsql-methode und die einzelnen Variablennamen emp_id, last, first und salary an Ihre Bezeichungen anpassen und fertig ist Ihre erste einfache Datenanzeige. Sie können natürlich auch den umgebenden HTML-Code auf Ihre Bedürfnisse anpassen ;-)
Weitere Informationen im Internet
Zope Book - Relationale Datenbanken:
http://zope.org/Documentation/Books/ZopeBook/2_6Edition/RelationalDatabases.stx
Zope Page Template:
http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZPT.stx
ZSQL:
http://www.zope.org/Documentation/Guides/ZSQL-HTML/ZSQL.html