Re: Getting a cursor?

Paul Winkler <[email protected]>
Newsgroups gmane.comp.web.zope.database
Message-ID <[email protected]>
On Thu, Sep 28, 2006 at 11:20:13AM +0200, Charlie Clark wrote:
> Am 28.09.2006, 00:26 Uhr, schrieb Paul Winkler <[email protected]>:
> 
> >I'll be writing product code, and am currently just experimenting via
> >zopectl debug, so I have full access to everything.  But I still can't
> >see how to get a cursor or anything else that will let me retrieve
> >multiple record sets from one STP call.
> >What should I be looking for?
> >./bin/zopectl debug
> >Starting debugger (the name "app" is bound to the top-level Zope object)
> >(snip)
> >>>>conn = app.sweetums_test()
> >>>>conn
> ><Products.mxODBCZopeDA.ZopeDA.DatabaseConnection "DSN=MSSQLdsn" thread
> >47227742061040/47227742061040 at 0x2aaaab0907e8>
> >>>>dir(conn)
> 
> You don't need an explicit cursor as you already have one for your  
> connection. Simply use callproc()
> 
> conn.callproc(procedure_name, params)
> while True:
>     rset = conn.fetchone()

No dice, it barfs on that line:

Traceback (most recent call last):
  File "<stdin>", line 2, in ?
AttributeError: DatabaseConnection instance has no attribute 'fetchone'

And, as I pointed out in my original post, DatabaseConnection.callproc()
has a different API from cursor.callproc(). Per my experimentation,
cursor.callproc() gets (but does not return) all result sets, which can
then be accessed via cursor.fetchone(), cursor.nextset() etc. 

But DatabaseConnection.callproc() simply returns either the first or
last result set, depending on your configuration.  All other result sets
are discarded.  

Thanks for the help though. Any other suggestions?

-- 

Paul Winkler
http://www.slinkp.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.