- What Is the ZODB?
- Relational Database Management Systems (RDBMS)
- Why Are Database Adapters Necessary?
- Which Database Adapter Do I Need?
- Connecting MySQL and Zope
- Gadfly—Zope's Integrated Demo Relational Database
- Introduction to SQL
- Using Z SQL Methods to Submit SQL Statements
Connecting MySQL and Zope
In this section, you will learn how to install the MySQL database adapter for Zope and how to establish the connection between MySQL and Zope. We have used the following software:
|Operating System:||SuSe Linux 6.4|
|MySQL Database Version:||MySQL 3.22.32|
|Python Version:||Python 1.5.2.|
We assume that you already have an existing MySQL database and will not describe how to create such a database in MySQL.
The database adapter, as well as the database driver, can be downloaded under the category External Access on the Download page of http://www.zope.org. The database driver file is a MySQL database module that contains newer drivers for the database adapter.
Visit Zope.org frequently for the latest database adapters for your database.
Installing the MySQL Database Adapter and the Latest Drivers
Suppose your Zope directory is /usr/local/ZopePark/Zope-2.3.0-src/ and that you downloaded the database adapter file for the MySQL database (ZMySQLDA-1.1.4-nonbin.tar.gz). The files within the packed file already contain the correct paths within the Zope directory.
As a result, you only need to copy the database adapter file to your Zope directory
cp ZMySQLDA-1.1.4-nonbin.tar.gz /usr/local/ZopePark/Zope-2.3.0-src/
or you can move the file with the following command:
mv ZMySQLDA-1.1.4-nonbin.tar.gz /usr/local/ZopePark/Zope-2.3.0-src/ ZMySQLDA-1.1.4-nonbin.tar.gz
Now go to the Zope directory
and enter the following command to unpack the database adapter file:
tar xzvf ZMySQLDA-1.1.4-nonbin.tar.gz
The files will now be unpacked to the /lib/python/Products/ZMySQLDA/ directory within your Zope directory. Now move the database driver file to the /lib/python/ Products/ directory and unpack it using the same tar command used previously.
Next, you need to edit the setup.py file in the /lib/python/Products/ MySQL-python-0.3.2 directory or at least make sure that the paths to the include and library directories in your MySQL installation are correct.
The next step is to compile the drivers files because they come in a non-binary version. It is necessary to first compile the drivers because the database adapter cannot be compiled without a compiled version of the drivers. To compile the drivers, go to the /lib/python/Products/MySQL-python-0.3.2 directory, which was created during the unpacking process by the database drivers file. Enter the following commands:
python setup.py build <ENTER> python setup.py install <ENTER>
Now that the drivers are set up correctly, you can compile the actual database adapter. Change to the source directory in the database adapter directory (/lib/python/Products/ZMySQLDA/src/) and enter the following commands:
make -f Makefile.pre.in boot <ENTER> make <ENTER>
In case you run Python with a command other than Python (python1.5.2, for example), you need to add the command that will call Python to the first of the previous lines as follows:
make f Makefile.pre.in boot PYTHON=python1.5.2
The make command should create a MySQLModule.so file in the source directory. Now you just need to copy or move the MySQLModule.so file to the ZMySQLDA directory and restart your Zope server. The Z MySQL Database Connection should then appear in the drop-down menu on your Zope Management screen.
Try to find someone with a similar machine and configuration as yours and who has a binary (compiled) version of the database adapter. This will make the installation process much easier because then you just need to copy the respective directories into your Zope installation.
Although there is a Windows version of MySQL and the setup.py file of the database drivers can be changed so that it can be used on Windows, it is not advisable to use MySQL with Zope on a Windows machine. However, if you do want to use MySQL on Windows, try to find someone who can give you the binary version of the database adapter and the database drivers, but make sure it was compiled on a Windows machine. This will save you from having to compile the files yourself, which is the main problem on a Windows machine.
Establishing a Connection
A database connection in Zope means a direct link between Zope and an existing database filenot between MySQL in general and Zope. Therefore, you need to create such a connection for every database you want to access from Zope.
To create such a connection, start your Zope server (see Chapter 2, "Installation and Configuration"), open your browser, and enter the Zope management screen.
If the installation of the database adapter was successful, the Available Objects menu below the list of objects contained in the current folder (right frame) now contains a new objectZ MySQL Database Connection. To create the connection, select Z MySQL Database Connection from the menu. The browser is being directed to a new page, the Add page for creating the database connection.
The Id and Title fields have default values that you can change to make different connections easier to distinguish. In the Database Connection String field, you enter the data Zope needs to find the database:
name_of_the_database_file[@host] username password
The optional parameter @host is necessary only if your database is on a different machine than your Zope installation.
When creating a new database connection, you should do so directly in the folder where you will be using it, or somewhere higher up in the folder hierarchy. You cannot use a connection that is below the Z SQL methods in the Zope hierarchy.
The connection will be established after you click the Add button.
Let's assume that you have a MySQL database called Addressbook and that you want to access this database file via Zope. If necessary, start the Zope process and go to the Management screen. Create a new folder by selecting Folder from the drop-down menu atop the list of objects in the root folder. Fill out the form with the information shown in Figure 3.1.
Now change into the newly created folder and add a Z MySQL database connection object. Fill out the form as follows (assuming that you have a user John with the password 123):
|Title:||MySQL Database Addressbook|
|Database Connection||Addressbook John 123 String:|
Figure 3.1 Adding the MyAddressbook folder.
After you have clicked the Add button, the database connection object will appear in the list of objects in the MyAddressbook folder. You have established a link between the Addressbook database and Zope now, and you can start sending queries to and receive data from the Addressbook database. You can test this via the Test View that will be explained later in the chapter (see "The Different Views of the Database Connection").