python对warning 告警错误的处理


产生的背景:

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")

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM