产生的背景:
import pymysql conn = pymysql.connect( host="192.168.85.129", port=3306, user="root", password="123456", database="pymysql", charset="utf8" ) cursor = conn.cursor() sql = """ create table if not exists user4 ( id int auto_increment primary key, name varchar(30) not null unique, sex enum('female','male') default 'male', hobby set("打羽球","泡吧","吹牛皮","吃大餐","喝农药"), age tinyint(3) )engine=innodb default charset="utf8" """ ret = cursor.execute(sql) # 返回受影响的行数 print(ret) # 根据PEP8规范,在最后一行代码后面,还要一个空行 # 抛出的告警如下: # C:\Python36\lib\site-packages\pymysql\cursors.py:170: Warning: (1050, "Table 'user4' already exists") # result = self._query(query)
那么如何在控制台,屏蔽 告警错误呢? 注意: try ..... except .... 不能捕捉到告警,默认情况下。
import pymysql from warnings import filterwarnings filterwarnings("error",category=pymysql.Warning) # 指定过滤告警的类别为 pymysql.Warning类, # 动作为"error",该动作可以抛错,则可以用try ... except 捕获 conn = pymysql.connect( host="192.168.85.129", port=3306, user="root", password="123456", database="pymysql", charset="utf8" ) cursor = conn.cursor() sql = """ create table if not exists user4 ( id int auto_increment primary key, name varchar(30) not null unique, sex enum('female','male') default 'male', hobby set("打羽球","泡吧","吹牛皮","吃大餐","喝农药"), age tinyint(3) )engine=innodb default charset="utf8" """ try: ret = cursor.execute(sql) # 返回受影响的行数 print(ret) except pymysql.Warning as e: print(e)
# 输出结果如下:
(1050, "Table 'user4' already exists")