因需要对saltstack的所有动作进行入库采集,网上采集脚本mysql连接会因超时而断开,导致守护进程在下一次采集数据时提示:

Traceback (most recent call last):File "./salt_event_to_mysql.py", line 39, in <module>ret['success'], json.dumps(ret)))File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 173, in executeFile "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')

后退出,解决方法是采用类似mysql_ping()的方法在每次数据入库前做一次检测,唤醒连接,以下是完整代码:

#!/bin/env python
#coding=utf8
# Import python libs
import json
# Import salt modules
import salt.config
import salt.utils.event
# Import third party libs
import MySQLdb
__opts__ = salt.config.client_config('/etc/salt/master')
# Create MySQL connect
conn = MySQLdb.connect(host=__opts__['mysql']['host'], user=__opts__['mysql']['user'], passwd=__opts__['mysql']['pass'], db=__opts__['mysql']['db'], port=__opts__['mysql']['port'])
cursor = conn.cursor()
# Listen Salt Master Event System
event = salt.utils.event.MasterEvent(__opts__['sock_dir'])
for eachevent in event.iter_events(full=True):####保持连接的部分###########if conn is None:conn = MySQLdb.connect(host=__opts__['mysql']['host'], user=__opts__['mysql']['user'], passwd=__opts__['mysql']['pass'], db=__opts__['mysql']['db'], port=__opts__['mysql']['port'])cursor = conn.cursor()else:conn.ping(True)###########################ret = eachevent['data']if "salt/job/" in eachevent['tag']:# Return Eventif ret.has_key('id') and ret.has_key('return'):# Igonre saltutil.find_job eventif ret['fun'] == "saltutil.find_job":continueif ret['fun'] == "test.ping":continuesql = '''INSERT INTO `salt_returns`(`fun`, `jid`, `return`, `id`, `success`, `full_ret` )VALUES (%s, %s, %s, %s, %s, %s)'''cursor.execute(sql, (ret['fun'], ret['jid'],json.dumps(ret['return']), ret['id'],ret['success'], json.dumps(ret)))cursor.execute("COMMIT")# Other Eventelse:pass

转载于:https://blog.51cto.com/318106/1583891

python下保持mysql连接,避免“MySQL server has gone away“方法相关推荐

  1. freebsd php 编译 mysql sql2005_问下:Freebsd下用php连接ms sql server

    你的位置: 问答吧 -> PHP -> 问题详情 问下:Freebsd下用php连接ms sql server 大家都怎么连接的,,,效率如何? 作者: james.liu 发布时间: 2 ...

  2. 关于MySQL连接Navicat Premium 12失败的解决方法

    关于MySQL连接Navicat Premium 12失败的解决方法 参考文章: (1)关于MySQL连接Navicat Premium 12失败的解决方法 (2)https://www.cnblog ...

  3. python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)

    最近逐渐打算将工作的环境转移到ubuntu下,突然发现对于我来说,这ubuntu对于我这种上上网,收收邮件,写写博客,写写程序的时实在是太合适了,除了刚接触的时候会不怎么完全适应命令行及各种权限管理, ...

  4. mysql 连接闪断自动重连的方法

    使用php作为后台运行程序(例如短信群发),在cli模式下执行php,php需要连接mysql循环执行数据库处理. 当mysql连接闪断时,之后循环的执行将会失败. 我们需要设计一个方法,当mysql ...

  5. php项目如何导jdbc包,JDBC-idea导入mysql连接java的jar包(mac)的方法

    前言 1.本文使用的是mysql8.0版本 与5.0版本相比:导包方式相同,后面代码中的注册驱动方式不同 1.mac与pc的idea菜单和图标不是完全相同,但是步骤是差不多的 下载对应版本的jar包 ...

  6. mysql连接提示错误_服务器经常提示mysql连接错误,有木有解决方法?

    网络是联通的,因为在同一主机内,本地连接到mysql服务器,和运行环境无关,php,python连接数据库都有这种情况出现 提示Can't connect to MySQL server on 'lo ...

  7. MySQL连接查询——MySQL 基础查询你会了吗?

    前言: 由于大一学习数据库不扎实,学到后面有点吃力,所以回过头来认真学习一边,写一些学习总结,提醒自己.也要告诫读者,把基础打扎实.读者觉得有用的话可以收藏点赞哦! 上一篇:MySQL函数查询--My ...

  8. VScode配置MySQL连接使用MySQL

    目录 本地安装MySQL 1. [MySQL官网下载(点击下载)](https://dev.mysql.com/downloads/mysql/) 2. 解压并设置环境变量 3. 初始化启动 VSco ...

  9. mysql 连接错误The server time zone value ‘?????????‘

    完整报错信息 java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents m ...

  10. Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题

    数据库出现如下连接问题 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The ...

最新文章

  1. java build.gradle 详解_java – Gradle构建失败[无法解析配置的所有依赖项’:compile’.]...
  2. 第一章 初识Mysql
  3. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化
  4. ubuntu编译并调试OpenJDK8源码实践
  5. poj 1664 放苹果 DPDFS
  6. DatabaseMetaData.getIndexInfo
  7. PHP如何添加变量 $_SERVER
  8. 故障分析:数据库一致性关闭缓慢问题诊断
  9. 关于使用runtimeStyle属性问题讨论
  10. 【社会/人文】概念的理解 —— 断舍离、饭(饭制版)
  11. Java 生产环境 linux下汉字变方框解决
  12. 弘辽科技:淘宝开店类别怎么选择?淘宝开店如何选类目?
  13. 西工大计算机课程表,工大、高新、交大、爱知等7所名校初一作息时间表课表新鲜出炉!...
  14. 伯努利公式怎么推导的
  15. 微信小程序中使用wx.showToast()进行界面交互
  16. 新型城镇化:智慧城市成亮点
  17. jQuery table组织架构图表插件
  18. vue实现图片自定义尺寸裁切并上传
  19. 13部成功预知未来科技的科幻电影
  20. (阿里巴巴开发手册)为什么阿里巴巴推荐内部员工使用StringBuilder?

热门文章

  1. ubuntu16.04安装teamviewer12
  2. 【收集】腾讯AlloyTeam
  3. 【C语言】中的版本规范(C89 C99等)
  4. Macbook Pro 光驱坏 安装windows
  5. HTML5中微数据在搜索引擎中的使用举例
  6. jdbcTemplate查询方法
  7. daily scrum 11.27
  8. Direct2D教程(五)复合图形
  9. 设计模式之单例模式的多重实现
  10. python求列表的平均值的用法_python如何求列表平均值?_后端开发