由于管理系统中对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的模块返回值问题解决相关推荐

  1. saltstack mysql模块_SaltStack工具中MySQL的模块返回值问题解决

    由于管理系统中对mysql管理的开发中用到了saltstack集成的mysql模块其中一个主要的功能是 mysql.query 官方文档中的两个示例: salt.modules.mysql.query ...

  2. C++中函数模板的返回值是模板类型参数的调用方法

    1 函数模板 模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔.关于函数模板的详细介绍,请参考<C++中模板函数及模板 ...

  3. linux中popen汉字乱码,Python中使用subprocess.Popen返回值乱码解决方案

    Python中使用subprocess.Popen返回值乱码解决方案 问题描述 在python 2.7中,使用subprocess.Popen()调用*nix命令,并通过管道,获取其输出,并将其返回值 ...

  4. python中os.system.获取输出信息_python中os.system()的返回值

    [python中os.system()的返回值] 如果第三方程序返回的是布尔型返回值,os.system会将true转为1,false转为0进行返回. 问题: /bin/xxx.py是一个返回码为1的 ...

  5. java分布式对象——远程方法中的参数和返回值+远程对象激活

    [0]README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象--远程方法中的参数和返回值+远程对象激活 的相关知识: [1]远程方法中的参数和返回值 ...

  6. IXMLDOMDocument中的load方法返回值有BUG

    IXMLDOMDocument中的load方法返回值是否有BUG IXMLDOMDocument中load一个xml文件时,返回值和msdn上说的不符 MSDN上说的是: Return Values ...

  7. Java面试题:IO流中read()方法为什么返回值是int

    Question:IO流中read()方法为什么返回值是int? anwser:因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, ...

  8. python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决

    python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决 具体原因: opencv-python 版本还有一定关 ...

  9. php的curl如何返回值,怎么在PHP中利用CURL获取返回值

    怎么在PHP中利用CURL获取返回值 发布时间:2021-01-05 16:58:39 来源:亿速云 阅读:96 作者:Leah 怎么在PHP中利用CURL获取返回值?针对这个问题,这篇文章详细介绍了 ...

最新文章

  1. 我在互联网大厂,和同事谈恋爱
  2. 权限提升 T1548.002 绕过UAC
  3. 【Flask】Jinja2之测试器的应用
  4. SQL SERVER 常用日期计算
  5. 第1章-导言-习题1.13-1.17
  6. @Autowired和可选依赖项
  7. discuz设置用户每天回帖数_[建站教程]Discuz3.4设置QQ互联登陆教程
  8. java 签名 ecdsa_Java实现ECDSA签名算法
  9. 程序员必知的Python陷阱与缺陷列表
  10. 三款好用的前端代码编辑器推荐
  11. 也许你需要在 Antergos 与 Arch Linux 中查看印度语和梵文?
  12. 工业相机选型和镜头焦距计算
  13. 美国LangeEylandt长岛
  14. 公司声明:Selina伤情稳定 Hebe及Ella工作继续
  15. CSS:纯CSS3全屏背景图片幻灯片轮播
  16. 学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)
  17. 如何集中自己的注意力
  18. react 组件渲染控制
  19. Java枚举类与注解
  20. 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统

热门文章

  1. java查看sql视图_数据库的查询与视图
  2. 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序
  3. 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
  4. 长sql和短sql加java区别_Mybatis下动态sql中##和$$的区别讲解
  5. 判断某值是否属于枚举类中的值_编写高质量可维护的代码之优化逻辑判断
  6. 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
  7. 压力传感器变送器读取数据测试:MIK-BSQW
  8. 基于MM32F3273的MicroPython实验电路板 - 工作并不是正常
  9. 单片机片外RAM,串行的
  10. macbookair有没有touchbar_买 MacBook Pro 到底要不要选 Touch Bar 版?看清需求后再下手...