Zope muss über den direkten Zugriff auf die Datenbank verfügen; dafür sind zwei Voraussetzungen zu erfüllen:
- Zope braucht eine abstrakte, durch Scripting-Code ansprechbare Kommunikations-Schnittstelle für SQL; dies wird von einem Zope-Produkt erledigt (z.B. ZMySQLDA für MySQL oder ZPsycopgDA für Postgres)
- Die Datenbank braucht ein entsprechendes Schnittstellen-Gegenstück, um die von Zope gesendeten Requests zu verarbeiten und wiederum mit Zope zu kommunizieren. Dafür wird eine datenbankspezifische Python API eingesetzt (Python Postgres API, POPY für Postgres oder MySQL-Python-Adapter für MySQL)
Folgende Websites liefern die Sourcen und Installations-Hinweise für den MySQL-Python-Adapter und den Einsatz des DA-Adapters in Zope:
- Schritt für Schritt-Anleitung Suse 8.1
- http://alt.dzug.org/Members/wheider/howto/inst-Zope-MySQL-SuSE
- Download MySQL-Python-Adapter
- http://sourceforge.net/projects/mysql-python
- Binaries u.a. für Windows
- http://www.zope.org/Members/isalsberg/Binaries/Useful_binary_collection
- Connecting Zope to External Relational Databases
- http://www.samspublishing.com/articles/article.asp?p=24698&rl=1
TIPP: Mit der Zope-eigenen Gadfly-Datenbank experimentieren
Im Installationsverzeichnis des ZMS-Produktes befindet sich der Ordner ../zms/import/zmssqldb/. Dort ist ein SQL-Beispiel für die Zope-interne SQL-Datenbank Gadfly angelegt. Mit Hilfe von zgadfly.sql lässt sich über eine ZSQL-Methode ein kleiner Satz von Datenbank-Tabellen erzeugen.
Um eine Gadfly-Datenbank nutzen zu können, ist es lediglich erforderlich, im Zope-Instanz-Verzeichnis ../var/gadfly/instance ein Verzeichnis für die Datenbank anzulegen. Die dort befindlichen Verzeichnisnamen erscheinen in einer Auswahl des Gadfly-Connectors. Über das Test-Menü lässt sich der SQL-Code zur Erzeugung der Tabellen ausführen.
Sobald eine GadflySQL-Connectors konfiguriert ist, kann die entsprechende Datenbank über jedes ZMSSqldb-Objekt angesprochen werden. Wichtig: Gadfly ist nicht in der Lage auto-incrementelle Datenfelder zu füllen. Das kann bei der Neuanlage von Datensätzen einen SQL-Fehler bedingen, sofern dieser Datentyp im Datenmodell definiert ist.