On Thu, Nov 03, 2005 at 12:48:40PM +0100, Brian Sutherland wrote: > On Thu, Nov 03, 2005 at 12:08:09PM +0100, Andres Freund wrote: > > 4. Every database adapter has an own interface which inherits from the > > zope one. This would enable the use of normal zope adaption which i > > would prefer, but again every adapter which should be used together > > with sqlos has to be changed. > > This is also my slightly preferred option. It could work for mysql as > follows (/me waves hands rapidly): > > 1. zope.app.rdb define IMySQLZopeConnection which extends > IZopeConnection. IMySQLZopeConnection is just a marker interface. > 2. in sqlos register an adapter from IMySQLZopeConnection to sqlos to the > IZopeSQLConnection. > 3. in mysqldbda provide an implementation of IMySQLZopeConnection, i.e. > returns objects implementing IMySQLZopeConnection in place of > IZopeConnection
So, this is the code I will commit to the mysqldbda (similar code may eventually make it's way into the other database adapters): Index: ../mysqldbda/adapter.py =================================================================== --- ../mysqldbda/adapter.py (revision 39859) +++ ../mysqldbda/adapter.py (working copy) @@ -16,11 +16,17 @@ $Id: Adapter.py,v 1.1 2004/10/10 mriya3 """ +from zope.interface import directlyProvides +from zope.app.rdb.interfaces import IZopeConnection from zope.app.rdb import ZopeDatabaseAdapter, parseDSN import MySQLdb +class IMySQLZopeConnection(IZopeConnection): + """A marker interface stating that this connection uses the MySQL SQL.""" + + class MySQLStringConverter: def __init__(self, encoding): @@ -66,3 +72,8 @@ def identity(self, x): return x + + def __call__(self): + connection = ZopeDatabaseAdapter.__call__(self) + directlyProvides(connection, IMySQLZopeConnection) + return connection And how it is used in sqlos: Index: sqlos/src/sqlos/configure.zcml =================================================================== --- sqlos/src/sqlos/configure.zcml (revision 19326) +++ sqlos/src/sqlos/configure.zcml (working copy) @@ -1,5 +1,6 @@ <configure xmlns="http://namespaces.zope.org/zope" xmlns:browser="http://namespaces.zope.org/browser" + xmlns:zcml="http://namespaces.zope.org/zcml" i18n_domain="sqlos"> <include file="permissions.zcml" /> @@ -145,6 +146,15 @@ /> --> + <configure zcml:condition="installed mysqldbda"> + <adapter + provides=".interfaces.IZopeSQLConnection" + for="mysqldbda.adapter.IMySQLZopeConnection" + permission="zope.Public" + factory=".adapter.MySQLAdapter" + /> + </configure> + <adapter provides="zope.app.container.interfaces.INameChooser" for="sqlos.interfaces.container.ISQLObjectContainer" -- Brian Sutherland Metropolis - "it's the first movie with a robot. And she's a woman. And she's EVIL!!" _______________________________________________ Zope3-dev mailing list Zope3-dev@zope.org Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com