trapping a MySql warning

mysql, python

Solution

Warnings are just that: warnings. They get reported to (usually) stderr, but nothing else is done. You can't catch them like exceptions because they aren't being raised.

You can, however, configure what to do with warnings, and turn them off or turn them into exceptions, using the `warnings` module. For instance, `warnings.filterwarnings('error', category=MySQLdb.Warning)` to turn `MySQLdb.Warning warnings` into exceptions (in which case they would be caught using your try/except) or `'ignore'` to not show them at all. You can (and probably should) have more fine-grained filters than just the category.

Problem

In my python script I would like to trap a "Data truncated for column 'xxx'" warning durnig my query using MySql. I saw some posts suggesting the code below, but it doesn' work. Do you know if some specific module must be imported or if some option/flag should be called before using this code? Thanks all Afeg ``` import MySQLdb try: cursor.execute(some_statement) # code steps always here: No Warning is trapped # by the code below except MySQLdb.Warning, e: # handle warnings, if the cursor you're using raises them except Warning, e: # handle warnings, if the cursor you're using raises them ```

Original source