From: Josh C. <na...@gm...> - 2004-09-04 12:04:55
|
I'd like to know this too, I've run into the same problems. -Josh On Fri, 3 Sep 2004 13:45:07 -0500, Skip Montanaro <sk...@po...> wrote: > > If a cursor's execute() method results in an error (say, from a trigger > failing for some reason) it appears there is no recourse to continue other > than closing the connection and starting over. Here's the simple test case: > > c = Sybase.Connection(...) > c1 = c.cursor() > c1.execute("select * from blah") > c2 = c.cursor() > c2.execute("select 1") > > The first execute() call results in a DatabaseError exception because there > is no column "blah". The second execute() call also fails with a > DatabaseError, this time in ct_send. The message is: > > ct_send(): user api layer: external error: This routine cannot be called > because another command structure has results pending. > > How do I toss those pending results? I've tried wrapping the c1 calls in > c.begin()/c.rollback() calls. I've tried closing and/or deleting c1. I've > tried fetching the nonexistent results of the failed execute() call. > Nothing seems to make Sybase happy again until a new connection is created. > > Is there a better (less sledgehammer-like) way to recover from errors? > > Thanks, > > -- > Skip Montanaro > Got spam? http://www.spambayes.org/ > sk...@po... > _______________________________________________ > Python-sybase mailing list > Pyt...@ww... > https://www.object-craft.com.au/cgi-bin/mailman/listinfo/python-sybase > |