Trapping MySQLdb warnings

Tim Johnson tim at johnsons-web.com
Thu Jun 16 17:56:22 EDT 2011


* srinivas hn <hnsri49 at gmail.com> [110616 11:06]:
> Hi Tim,
> 
>    import warnings
> 
> with warnings.catch_warnings():
>     warnings.simplefilter('error', MySQLdb.Warning)
>     try:
>       cursor.execute(insert_query)
>       conn.commit()
>       return 'Success'
>     except MySQLdb.Error, error:
>       logging.error("Error in insertion %s query is ", error)
>       return 'Failure'
>     finally:
>       conn.close()
> 
> try:
>    xyz = do_query(insert_query)
> except MySQLdb.Warning, warning:
>    logging.warning(warning)
  Hi Again srinavas:
  For an overview, I need to interate thru a file, executing each
  line as an insert statement. Based on your valuable input, I have
  the following:
## ------------------------------------------------
def __process_line(self):
  """For each line in the file .."""
  try :
    self.db.simple(self.read())
  except MySQLdb.Warning,e:
	## catching warnings here, log, count, abort
    ## or some other action based on implementation
    print(e) ## and count, log .... etc	
## ------------------------------------------------
def simple(self,insert_query):
  """Executing one line.""" 
  cursor = self.__rdb 
  with warnings.catch_warnings():
    warnings.simplefilter('error', MySQLdb.Warning)
    cursor.execute(insert_query)

## This works well, but I'd like to do something further: Control is
transfered back to the calling function's `except' block when the
first warning is found. There can be and are multiple warning
conditions on each line. Is there a way to trap all of them?
I am unclear from the docs that I am reading at
http://docs.python.org/library/warnings.html
whether that can be done.
Thanks again
-- 
Tim 
tim at johnsons-web dot com or akwebsoft dot com
http://www.akwebsoft.com



More information about the Python-list mailing list