Python-如何捕获特定的mysql警告?

Python-如何捕获特定的mysql警告?,python,try-catch,warnings,mysql-python,Python,Try Catch,Warnings,Mysql Python,我想捕获任何包含字符串“value”的警告 从中,我看到此示例以捕获特定消息: warnings.filterwarnings('error', 'Unknown table .*') 有关消息参数的说明: message是一个字符串,其中包含警告消息必须匹配的正则表达式。匹配被编译为始终不区分大小写 我有下面的代码,但没有抛出错误,相反,我只是得到了我无法捕捉的警告 warnings.filterwarnings('error', message='\bvalue\b') 我错过了什

我想捕获任何包含字符串“value”的警告

从中,我看到此示例以捕获特定消息:

warnings.filterwarnings('error', 'Unknown table .*')
有关消息参数的说明:

message是一个字符串,其中包含警告消息必须匹配的正则表达式。匹配被编译为始终不区分大小写

我有下面的代码,但没有抛出错误,相反,我只是得到了我无法捕捉的警告

warnings.filterwarnings('error', message='\bvalue\b')   

我错过了什么?据我所知,正则表达式应该用于匹配“value”字符串。

Python的正则表达式语法已被记录在案,它说的第一件事是:

正则表达式使用反斜杠字符“\”表示特殊形式,或允许在不调用特殊含义的情况下使用特殊字符。这与Python在字符串文本中出于相同目的使用相同字符相冲突;例如,要匹配文本反斜杠,可能必须将“\\”写入模式字符串,因为正则表达式必须是\,并且每个反斜杠必须在常规Python字符串文本中表示为\

解决方案是对正则表达式模式使用Python的原始字符串表示法;反斜杠不会以任何特殊方式在前缀为“r”的字符串文字中处理。因此,r\n是一个包含“\”和“n”的双字符字符串,而\n是一个包含换行符的单字符字符串。通常,模式将使用这种原始字符串表示法在Python代码中表示

在Python中,与许多语言一样,字符串“\b”对应于ASCII退格

您需要转义反斜杠字符,或者使用Python的特殊raw/regex前缀:

warnings.filterwarnings('error', message='\\bvalue\\b')
warnings.filterwarnings('error', message=r'\bvalue\b')

两个都试过了,还是不起作用。下面将捕获警告,尽管它没有我想要的那么具体,因此问题是:warnings.filterwarnings'error',category=MySQLdb.Warning。这是警告:/Users/jeff/Dropbox/homedev/fundlookup/data/db.py:35:警告:字段“crd”没有默认值