產生的背景:
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")