Zope muss über den direkten Zugriff auf die Datenbank verfügen; dafür sind zwei Voraussetzungen zu erfüllen:

  1. 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)
  2. 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)
ZMSsqldb_Architecture

Architektur der Datenbank-Connection

Folgende Websites liefern die Sourcen und Installations-Hinweise für den MySQL-Python-Adapter und den Einsatz des DA-Adapters in Zope:

  1. Schritt für Schritt-Anleitung Suse 8.1
  2. http://alt.dzug.org/Members/wheider/howto/inst-Zope-MySQL-SuSE
  3. Download MySQL-Python-Adapter
  4. http://sourceforge.net/projects/mysql-python
  5. Binaries u.a. für Windows
  6. http://www.zope.org/Members/isalsberg/Binaries/Useful_binary_collection
  7. Connecting Zope to External Relational Databases
  8. 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.

ZMSSQLDB_GadflyConnect

Im instance-Verzeichnis ../var/gadfly/ befindet sich ein Ordner „demo“; dieser erscheint dann in der Auswahl für die data source. Die damit verfügbare Datenbank kann nun mit Datentabellen gefüllt werden. Hinweis: Weitere Details zur Anlage einer Gadfly-Datenbank befinden sich in der der Zope-Dokumentation bzw. unter http://www.samspublishing.com/articles/article.asp?p=24698&seqNum=8&rl=1