SaltStack工具中MySQL的模块返回值问题解决
由于管理系统中对mysql管理的开发中用到了saltstack集成的mysql模块其中一个主要的功能是 mysql.query
官方文档中的两个示例:
salt.modules.mysql.query(database, query, **connection_args)
Run an arbitrary SQL query and return the results or the number of affected rows.
CLI Example:
salt '*' mysql.query mydb "UPDATE mytable set myfield=1 limit 1"
Return data:
{'query time': {'human': '39.0ms', 'raw': '0.03899'}, 'rows affected': 1L}
CLI Example:
salt '*' mysql.query mydb "SELECT id,name,cash from users limit 3"
Return data:
{'columns': ('id', 'name', 'cash'),
'query time': {'human': '1.0ms', 'raw': '0.001'},
'results': ((1L, 'User 1', Decimal('110.000000')),
(2L, 'User 2', Decimal('215.636756')),
(3L, 'User 3', Decimal('0.040000'))),
'rows returned': 3L}
我测试的一个示例:
salt www.pyadmin.com mysql.query salt "explain select * from salt_events"
www.pyadmin.com:
----------
query time:
----------
human:
14.0ms
raw:
0.01402
rows affected:
1
观察官方的和我测试的输出显示结果来看只有 SELECT 语句显示了希望的结果。
那么我要显示 explain的结果呢? 查看了好多遍官方的文档也没有头绪,只好从源代码入手了
首先找到这个相关的模块--mysql
主要位置在 /usr/local/lib/python2.7/dist-packages/salt/modules/mysql.py
注意:有的系统是在 site-packages 文件夹下
编辑这个文件找到如下位置:
ret = {} ret['query time'] = {'human': elapsed_h, 'raw': str(round(elapsed, 5))} select_keywords = ["SELECT", "SHOW", "DESC"] select_query = False for keyword in select_keywords:if query.upper().strip().startswith(keyword):select_query = Truebreak if select_query:ret['rows returned'] = affectedcolumns = ()for column in cur.description:columns += (column[0],)ret['columns'] = columnsret['results'] = resultsreturn ret else:ret['rows affected'] = affectedreturn ret
在字典里面增加 “EXPLAIN” 这样一个元素
select_keywords = ["SELECT", "SHOW", "DESC", "EXPLAIN"]
然后我们在来查看一下执行结果的输出:
www.pyadmin.com:
----------
columns:
- id
- select_type
- table
- partitions
- type
- possible_keys
- key
- key_len
- ref
- rows
- filtered
- Extra
query time:
----------
human:
0.24s
raw:
0.23805
results:
|_
- 1
- SIMPLE
- salt_events
- None
- ALL
- None
- None
- None
- None
- 3707
- 100.00
- None
rows returned:
1
和修改之前的输出结果对比多了results 这一项。
转载于:https://blog.51cto.com/andylhz2009/1951339
SaltStack工具中MySQL的模块返回值问题解决相关推荐
- saltstack mysql模块_SaltStack工具中MySQL的模块返回值问题解决
由于管理系统中对mysql管理的开发中用到了saltstack集成的mysql模块其中一个主要的功能是 mysql.query 官方文档中的两个示例: salt.modules.mysql.query ...
- C++中函数模板的返回值是模板类型参数的调用方法
1 函数模板 模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔.关于函数模板的详细介绍,请参考<C++中模板函数及模板 ...
- linux中popen汉字乱码,Python中使用subprocess.Popen返回值乱码解决方案
Python中使用subprocess.Popen返回值乱码解决方案 问题描述 在python 2.7中,使用subprocess.Popen()调用*nix命令,并通过管道,获取其输出,并将其返回值 ...
- python中os.system.获取输出信息_python中os.system()的返回值
[python中os.system()的返回值] 如果第三方程序返回的是布尔型返回值,os.system会将true转为1,false转为0进行返回. 问题: /bin/xxx.py是一个返回码为1的 ...
- java分布式对象——远程方法中的参数和返回值+远程对象激活
[0]README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象--远程方法中的参数和返回值+远程对象激活 的相关知识: [1]远程方法中的参数和返回值 ...
- IXMLDOMDocument中的load方法返回值有BUG
IXMLDOMDocument中的load方法返回值是否有BUG IXMLDOMDocument中load一个xml文件时,返回值和msdn上说的不符 MSDN上说的是: Return Values ...
- Java面试题:IO流中read()方法为什么返回值是int
Question:IO流中read()方法为什么返回值是int? anwser:因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, ...
- python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决
python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决 具体原因: opencv-python 版本还有一定关 ...
- php的curl如何返回值,怎么在PHP中利用CURL获取返回值
怎么在PHP中利用CURL获取返回值 发布时间:2021-01-05 16:58:39 来源:亿速云 阅读:96 作者:Leah 怎么在PHP中利用CURL获取返回值?针对这个问题,这篇文章详细介绍了 ...
最新文章
- 我在互联网大厂,和同事谈恋爱
- 权限提升 T1548.002 绕过UAC
- 【Flask】Jinja2之测试器的应用
- SQL SERVER 常用日期计算
- 第1章-导言-习题1.13-1.17
- @Autowired和可选依赖项
- discuz设置用户每天回帖数_[建站教程]Discuz3.4设置QQ互联登陆教程
- java 签名 ecdsa_Java实现ECDSA签名算法
- 程序员必知的Python陷阱与缺陷列表
- 三款好用的前端代码编辑器推荐
- 也许你需要在 Antergos 与 Arch Linux 中查看印度语和梵文?
- 工业相机选型和镜头焦距计算
- 美国LangeEylandt长岛
- 公司声明:Selina伤情稳定 Hebe及Ella工作继续
- CSS:纯CSS3全屏背景图片幻灯片轮播
- 学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)
- 如何集中自己的注意力
- react 组件渲染控制
- Java枚举类与注解
- 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统
热门文章
- java查看sql视图_数据库的查询与视图
- 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序
- 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
- 长sql和短sql加java区别_Mybatis下动态sql中##和$$的区别讲解
- 判断某值是否属于枚举类中的值_编写高质量可维护的代码之优化逻辑判断
- 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
- 压力传感器变送器读取数据测试:MIK-BSQW
- 基于MM32F3273的MicroPython实验电路板 - 工作并不是正常
- 单片机片外RAM,串行的
- macbookair有没有touchbar_买 MacBook Pro 到底要不要选 Touch Bar 版?看清需求后再下手...