[Zope-DB] DC2Oracle external method problem

Matthew T. Kromer matt@zope.com
Tue, 24 Sep 2002 11:14:49 -0400

Iain Bassam wrote:

>Hi there,
>I am encountering a problem trying to use DCOralce2 in an external method. I
>am new to zope and python, so there may be an obvious answer that I'm
>oblivious to.
>I have installed DCOracle2 into ....\lib\python\Products\ZOracleDA as per
>windows installation instructions and run the install script. Through zope I
>can create a 'Z Oracle Database Connection' and query a database
>sucessfully. I would however like to create an external method to achieve
>I'm using the simple example in the DCOracle2 user guide, however I'm
>getting some errors.
>import DCOracle2
>    def dbconnect(self, REQUEST):
>    db = DCOracle2.connect('<user>/<password>@<connect string>')
>    c = db.cursor()
>    c.execute('select * from dual')
>    print c.fetchall()
>When I try to create the external method I get the error:
>Error Type: ImportError
>Error Value: No module named DCOracle2
>If I copy DCOracle2.py and DCOracle2.c to .../bin/lib directory, which may
>be a hack, I can create the external method, however running it causes the
>following error.
>Error Type: AttributeError
>Error Value: 'DCOracle2' module has no attribute 'connect'
>Any help as to where I'm going wrong would be greatly appreciated.

To use it as an external method; you'll need to pass the connection 
object to your external method -- then just call the connection object 
to get a cursor.

If you wanted to do the connect inside your external method (and thus 
not have the connection object manged by Zope) you want to import the 
inner DOracle2 directory (the one with DCOracle2.py and dco2.pyd).

Matt Kromer
Zope Corporation  http://www.zope.com/