【Python】关闭 warning 信息提示

背景
在使用 python MySQLdb 执行sql 命令的时候,如果执行结果含有warning,则会被写入到 stderr 展示到终端命令行。其实这些warning提示信息没有任何实际的作用。
root@rac3:~/scripts# >python set_ms.py -m 10.0.2.15:3306 -s 10.0.2.6:3308 
Begin to set Replicate on slave 10.0.2.6:3308
set_ms.py:35: Warning: Slave already has been stopped
  ret=cursor.execute(SQL)
set_ms.py:35: Warning: Sending passwords in plain text without SSL/TLS is extremely insecure.
  ret=cursor.execute(SQL)
set_ms.py:35: Warning: Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
  ret=cursor.execute(SQL)
Success : CHANGE MASTER TO MASTER_HOST='10.0.2.15',MASTER_USER='slave',MASTER_PASSWORD='xxxx',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=314;
那我们该怎么解决呢?
Python 提供了warnings模块,通过该模块控制系统warning 的输出形式,关闭或者打开。举个例子 
1 将  MySQLdb.Warning warnings 传入exceptions 以便通过 try  catch 获取exception 进而对其进行业务逻辑处理。
   filterwarnings('error', category=MySQLdb.Warning) 
 如果设置为error 则需要在代码中引入 except机制
  try:
        execSQL ...
   except MySQLdb.Warning, e:
        print "MySQLdb Warning", e

2 设置为warning 为 ignore ,忽略所有warning 信息。
  filterwarnings('ignore', category = MySQLdb.Warning)

代码实现
import MySQLdb
import MySQLdb.cursors
from warnings import filterwarnings
filterwarnings('ignore', category = MySQLdb.Warning)
def execSql(SQL,IP,PORT,USER,PWD):
  '''####exec_sql####'''
  try:
      db=MySQLdb.connect(host=IP,user=USER,passwd=PWD,db='test',port=int(PORT),charset="utf8")
      cursor=db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
  except MySQLdb.Error,e:
      print "connection failed!Error %d:%s"%(e.args[0],e.args[1])
      sys.exit(9)


推荐 
Python 官方的  Warning control  介绍的非常详细,想深入了解python 对warning 管理的同学可以认真阅读。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-1986069/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22664653/viewspace-1986069/

你可能感兴趣的:(【Python】关闭 warning 信息提示)