由于管理系统中对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 = True

break

if select_query:

ret['rows returned'] = affected

columns = ()

for column in cur.description:

columns += (column[0],)

ret['columns'] = columns

ret['results'] = results

return ret

else:

ret['rows affected'] = affected

return 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 这一项。

本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/1951339,如需转载请自行联系原作者

saltstack mysql模块_SaltStack工具中MySQL的模块返回值问题解决相关推荐

  1. vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题)

    vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题) 使用vscode+phpstudy配置php开发环境网上很文章都是挺好的,都成功解决了我的问题.但是 ...

  2. MySQL抓包工具:MySQL Sniffer【转】

    本文来自:https://github.com/Qihoo360/mysql-sniffer 简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. NoneBot2插件——打印系统状态
  2. springcloud 消息队列_全面而且简洁介绍SpringCloud微服务
  3. 详解DNS正向解析实验(有图有实验)
  4. 搜索 由浅入深 之一 水题
  5. appium+python自动化项目实战(一):引入nose和allure框架
  6. 4月1日,正式对全球科学界开放!
  7. Blazor服务器应用程序中使用EF Core的多租户
  8. 对2016年android就业的一些看法
  9. xp也可以将U盘格为NTFS
  10. Net系列框架-Dapper+AutoFac 基于接口
  11. 【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
  12. 昆仑通态触摸屏保存历史曲线_昆仑通态TPC7062存盘时间计算
  13. crm系统哪家公司做的最好?企业如何选择crm供应商
  14. ae合成设置快捷键_AE软件中最常用快捷键大全(学AE必备)
  15. 无缝滚动加加暂停效果
  16. 入门编程(小白写代码的神器)
  17. 厉害了!北大3位硕博生搞出ChatGPT版Excel!动动嘴就能自动处理表格……免费用!...
  18. Greenplum 优化 - 分布式键,重建索引,序列
  19. 定时器输出的PWM频率范围及占空比精度
  20. openfeign的快速使用

热门文章

  1. 查找、移除某个视图上的某类控件
  2. BZOJ 1088: [SCOI2005]扫雷Mine( )
  3. VS2003转VS2010 fatal error C1189: #error
  4. ActionScript 3.0 概要
  5. 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...
  6. 解决IE8IE9 jquery ajaxj 跨域请求失败的问题。
  7. C#操作Excel的OLEDB方式与COM方式比较
  8. python中的property
  9. SpringBoot-AOP切面处理
  10. 每天学一点Scala之 高阶函数 flatten