Python基础学习教程:Python脚本报错如何忽略MySQLdb的警告

  

  

  

  

  

这是在执行python脚本的时候遇到的错误,疯狂的报警告警告,一坨一坨的,看着实在不雅观,因此,还是解决一下比较好。本篇主要讲述的是错误的发现以及如何忽略警告警告。

  

报错如下:

  <>以前test.py: 531:警告:,Duplicate  entry  & # 39;把# 39;,for  key  & # 39; idx_user_city& # 39;   ,cursor_build.execute (insert_build_sql)   test.py: 531:警告:,Duplicate  entry  & # 39; 367 - 2 & # 39;, for  key  & # 39; idx_user_city& # 39;   

根据报错,我们知道错误是因为插入数据的时候主键重复造成的。不过已经用了插入忽略来插入了,怎么还是会报错呢?

  

  

  

  

  

后来搜索发现,插入忽略的插入方式,虽然能避免异常错误,但是确实会抛出异常。只是平时没有像这次把遭到展示出来了,为什么会展示呢?

      Python基础学习教程:Python脚本报错如何忽略MySQLdb的警告”>
  
  <p>
  </p>
  <p>查看mysql的错误级别:</p>
  <>以前mysql>, show  variables  like  & # 39; % log_warnings % & # 39;;
  +---------------+-------+
  | |,Variable_name  Value  |
  +---------------+-------+
  | |,log_warnings  1 |
  +---------------+-------+
  1,row 集,拷贝,1,warning  (0.00, sec) </pre>
  <p>根据log_warnings定义:</p>
  <p> (1) log_warnings用于标识警告信息是否一并记录到错误日志中。</p>
  <p> (2) log_warnings的值为0,表示不记录警告信息。</p>
  <p> (3) log_warnings的值为1,表示警告信息一并记录到错误日志中。</p>
  <p> (4) log_warnings的值大于1,表示“失败的连接“的信息和创建新连接时“拒绝访问“类的错误信息也会被记录到错误日志中。</p>
  <p>由此可见此时的数据库,设置的错误级别是记录的警告,只是你记录没错,但是抛出来就是你的不对了呀。</p>
  <p>
  </p>
  <p>默认的尝试。除了是捕获python脚本中的错误的,默认是捕获不到警告,那么是否可以把警告转化成错误,然后用试…除了来捕获呢</p>
  <p>
  </p>
  <pre> #导入部分
  得到warnings  import  filterwarnings
  filterwarnings(& # 39;错误# 39;,,类别=MySQLdb.Warning) </pre>
  <p>打印异常:</p>
  <>之前尝试:
  ,xxxx
  except  MySQLdb.Warning, w:
  时间=sqlWarning “警告:% s   

把异常转化错误为捕获会报错:

  <>以前Traceback  (most  recent  call 最后):   ,File “test.py",, line  548年,拷贝& lt; module>   ,main ()   ,File “test.py",, line  533年,主拷贝   ,cursor_build.execute (insert_build_sql)   ,File “cursors.py",, line  175年,执行拷贝   ,if  not  self._defer_warnings: self._warning_check ()   ,File “/cursors.py",, line  89年,_warning_check拷贝   ,警告(w [1], self.Warning,, 3)   _mysql_exceptions.Warning: Duplicate  entry  & # 39;把# 39;,for  key  & # 39; idx_user_city& # 39;   

本地测试是没通过,但是觉得这种方式应该是可行的,碍于时间,选择了下面的屏蔽遭到方式,不过这种转换警告为错误的思路还是很好地,有兴趣的同学可以尝试下。

  

  

  <>之前得到warnings  import  filterwarnings   filterwarnings(& # 39;忽略# 39;,,类别=MySQLdb.Warning)   

下面的尝试。除了中只需要正常捕获异常就行。执行py脚本:

  
 [xxx],美元python2.7  test.py 
  01:44:45  py 完成了
  

执行成功,查看数据库,也都成功写入,世界都安静了。

  

更多的   接下来会继续为大家更新。

Python基础学习教程:Python脚本报错如何忽略MySQLdb的警告