From: Dave C. <dj...@ob...> - 2002-04-19 07:10:38
|
>>>>> "Dave" == Dave Cole <dj...@ob...> writes: Dave> Now all I have to do is implement cs_config() in the extension Dave> module and convert Sybase.py module to used callback error Dave> handling. Slow but steady progress... I have implemented the cs_config() method for CS_CONTEXT objects. I then realised that a whole class of errors were never reaching the outside (Python) world due to my use of an internal CS_CONTEXT for doing numeric conversions (among other things). I decided to fix this up by placing the creation of the internal CS_CONTEXT under the control of Python code. The following is a test program which shows the new features. - - bugger.py - - - - - - - - - - - - - - - - - - - - - - - - - - - from sybasect import * def cslib_cb(ctx, msg): print 'cslib_cb:' print ' severity ', msg.severity print ' msgnumber', msg.msgnumber print ' msgstring', msg.msgstring print ' osnumber ', msg.osnumber print ' osstring ', msg.osstring print ' status ', msg.status print ' sqlstate ', msg.sqlstate raise ValueError('bugger!') status, ctx = cs_ctx_alloc(CS_VERSION_110) set_global_ctx(ctx) ctx.cs_config(CS_SET, CS_MESSAGE_CB, cslib_cb) numeric('12a') - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - When I run it this is what happens: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cslib_cb: severity 1 msgnumber 33816856 msgstring cs_convert: cslib user api layer: common library error: The conversion/operation was stopped due to a syntax error in the source field. osnumber 0 osstring status 1076857758 sqlstate ZZZZZ Traceback (most recent call last): File "bugger.py", line 17, in ? numeric('12a') File "bugger.py", line 12, in cslib_cb raise ValueError('bugger!') ValueError: bugger! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Now I am finally ready to convert Sybase.py to callback error handling. - Dave -- http://www.object-craft.com.au |