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