SaltStack工具中MySQL的模块返回值问题解决

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

由于管理系统中对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,如需转载请自行联系原作者



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
207 4
|
22天前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
11天前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
50 4
|
10天前
|
关系型数据库 MySQL Python
pymysql模块,python与MySQL之间的交互
pymysql模块,python与MySQL之间的交互
|
2月前
|
SQL 监控 关系型数据库
使用 pt-query-digest 工具分析 MySQL 慢日志
【8月更文挑战第5天】使用 pt-query-digest 工具分析 MySQL 慢日志
40 3
使用 pt-query-digest 工具分析 MySQL 慢日志
|
2月前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 数据备份工具有哪些?
在Linux中,mysql 数据备份工具有哪些?
|
2月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
2月前
|
关系型数据库 MySQL 数据库
MySQL回滚工具:binlog 闪回工具 MyFlash工具
MySQL回滚工具:binlog 闪回工具 MyFlash工具
|
2月前
|
关系型数据库 MySQL OLTP
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
【8月更文挑战第6天】使用 pt-query-digest 工具分析 MySQL 慢日志性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
191 0
性能工具之 MySQL OLTP Sysbench BenchMark 测试示例
|
3月前
|
存储 监控 网络安全
saltStack自动化工具
saltStack自动化工具
50 7

推荐镜像

更多
下一篇
无影云桌面