I recently started delving into building a Zope3 + MySQL application on Ubuntu Dapper. Here are the steps I had to do:
I've elided starting and stopping the Zope3 process, the false starts, and dead ends.
Install the zope3-sandbox package, which gets all dependencies for Zope3, and sets up a sandbox instance at /var/lib/zope3/instance/sandbox/
Add my Ubuntu login user to the 'zope' group (makes editing easier).
Make sure the sandbox and all subfolders are writable by group: sudo chmod -R g+w /var/lib/zope3/instance/sandbox/
From the tarball, extract the four files
in /sqlos-0.2.1/includes/ to /var/lib/zope3/instance/sandbox/etc/package-includes/
After that, I had to do some fiddling to get the sample app included with SQLOS working with MySQL:
Go to /var/lib/zope3/instance/sandbox/lib/python/ and do a subversion checkout of the MySQLdbDA trunk:
svn co svn://svn.zope.org/repos/main/mysqldbda/trunk mysqldbda
Create a file named 'mysqldbda-configure.zcml'
inside /var/lib/zope3/instance/sandbox/etc/package-includes/
with the following contents: <include package='mysqldbda' />
Edit /usr/lib/python2.4/site-packages/sqlos-0.2.1-py2.4.egg/sqlos/ftesting.zcml to use the 'mysql' DB adapter predefined in the file instead of the 'sqlite' one.
Added a testdb to MySQL, and a testuser (with a password of testuser) with full privileges on that DB: mysqladmin --user=root -p create testdb
mysql> grant select, insert, update, create, alter, delete, drop ON testdb.* to testuser@localhost identified by 'testuser';
Create the required sample_person table: CREATE TABLE `sample_person` ( `fullname` varchar(50) NOT NULL default '', `username` varchar(20) NOT NULL default '', `password` varchar(20) NOT NULL default '', `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Create the required dog and sample_isolated_person tables: (details elided)
After accomplishing all of that, Zope now has a new 'SQLObject MultiContainer' available that you can add through the web, and to which you can then add simple 'Person' objects that are persistent in the table. Adding a second container shows the same person objects as exist
in the first. Deleting a person deletes the record. Deleting the containers does not.
After deleting all the added containers, deleting the
sqlos.ftesting-configure.zcml file from /var/lib/zope3/instance/sandbox/etc/package-includes disables the sample app objects from being addable in Zope.
I recently started delving into building a Zope3 + MySQL application on Ubuntu Dapper. Here are the steps I had to do:
I've elided starting and stopping the Zope3 process, the false starts, and dead ends.
Install the zope3-sandbox package, which gets all dependencies for Zope3, and sets up a sandbox instance at /var/lib/ zope3/instance/ sandbox/
Add my Ubuntu login user to the 'zope' group (makes editing easier).
sudo chmod -R g+w /var/lib/ zope3/instance/ sandbox/
Make sure the sandbox and all subfolders are writable by group:
install mysql-server package
install mysql-client package
install mysqladmin package
Install setuptools with ez_setup.py, as described here: peak.telecommun ity.com/ DevCenter/ EasyInstall# installation- instructions
http://
Install SQLObject by running:
sudo easy_install 'sqlobject'
(this is because the Dapper package of SQLObject conflicts with SQLOS)
Install SQLOS (Zope3 SQLObject Support) by running:
sudo easy_install 'sqlos'
Download a tarball of SQLOS: cheeseshop. python. org/pypi/ sqlos/
http://
From the tarball, extract the four files 0.2.1/includes/ to /var/lib/ zope3/instance/ sandbox/ etc/package- includes/
in /sqlos-
After that, I had to do some fiddling to get the sample app included with SQLOS working with MySQL:
Go to /var/lib/ zope3/instance/ sandbox/ lib/python/ and do a subversion checkout of the MySQLdbDA trunk: zope.org/ repos/main/ mysqldbda/ trunk mysqldbda
svn co svn://svn.
Create a file named 'mysqldbda- configure. zcml' zope3/instance/ sandbox/ etc/package- includes/
<include package='mysqldbda' />
inside /var/lib/
with the following contents:
Edit /usr/lib/ python2. 4/site- packages/ sqlos-0. 2.1-py2. 4.egg/sqlos/ ftesting. zcml to use the 'mysql' DB adapter predefined in the file instead of the 'sqlite' one.
Added a testdb to MySQL, and a testuser (with a password of testuser) with full privileges on that DB:
mysqladmin --user=root -p create testdb
Create the required sample_person table:
CREATE TABLE `sample_person` (
`fullname` varchar(50) NOT NULL default '',
`username` varchar(20) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
After accomplishing all of that, Zope now has a new 'SQLObject MultiContainer' available that you can add through the web, and to which you can then add simple 'Person' objects that are persistent in the table. Adding a second container shows the same person objects as exist
in the first. Deleting a person deletes the record. Deleting the containers does not.
After deleting all the added containers, deleting the configure. zcml file from /var/lib/ zope3/instance/ sandbox/ etc/package- includes disables the sample app objects from being addable in Zope.
sqlos.ftesting-
The following enhancements are requested:
1) Add a package to Ubuntu for MySQLdbDA, so a subversion source checkout is not necessary (Debian bug: http:// bugs.debian. org/cgi- bin/bugreport. cgi?bug= 345831)
2) Updating SQLObject under Dapper to 0.7 in order to support SQLOS. (Edgy has the newer version)
3) Add a package to Ubuntu for SQLOS for gluing Zope3 and MySQL together via SQLObject.