On Wed, 2011-11-16 at 09:09 -0800, Chris Kaynor wrote: > On Wed, Nov 16, 2011 at 8:57 AM, Frederic Rentsch > <anthra.nor...@bluewin.ch> wrote: > > Hi all, > > > > > > I'd like to log MySQL errors. If I do: > > > > try: (command) > > except MySQLdb.OperationalError, e: print e > > > > I may get something like: > > > > (1136, "Column count doesn't match value count at row 1") > > > > If I don't know in advance which error to expect, but on the contrary > > want to find out which error occurred, I can catch any error by omitting > > the name: > > > > except: (handle) > > > > But now I don't have access to the error message 'e'. I'm sure there's a > > way and it's probably ridiculously simple. > > except Exception, e: (or, in Py3, except Exception as e is prefereed). > > Note that you should generally avoid bare except statements "except:" > as that will catch everything, including KeyboardInterrupt and > SystemExit which may not be desirable. > > Even without saving the exception in the except statement, you can get > the type, value, and traceback with the sys.exc_info command. See > http://docs.python.org/library/sys.html#sys.exc_info > > For example: > > py>import sys > py>try: > py> raise RuntimeError > py> except: > py> print sys.exc_info() > py> > (<type 'exceptions.RuntimeError'>, RuntimeError(), <traceback object > at 0x0000000002371588>)
Chris, Thanks very much! Great help! Frederic -- http://mail.python.org/mailman/listinfo/python-list