博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SaltStack工具中MySQL的模块返回值问题解决
阅读量:7072 次
发布时间:2019-06-28

本文共 2151 字,大约阅读时间需要 7 分钟。

由于管理系统中对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 = Falsefor keyword in select_keywords:    if query.upper().strip().startswith(keyword):        select_query = True        breakif select_query:    ret['rows returned'] = affected    columns = ()    for column in cur.description:        columns += (column[0],)    ret['columns'] = columns    ret['results'] = results    return retelse:    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,如需转载请自行联系原作者

你可能感兴趣的文章
软件测试行业年度核心热点数据大揭秘(2018 )
查看>>
Vagrant (四) - Box 的用法
查看>>
前端代码风格自动化系列(四)之Prettier
查看>>
访问者模式
查看>>
Go routine调度
查看>>
Python 二分查找与 bisect 模块
查看>>
webpack4系列教程(十):总结
查看>>
【性能优化】quicklink:实现原理与给前端的启发
查看>>
用console.log分析Vue源码
查看>>
原生JavaScript轮播效果,噢,其实什么才叫原生
查看>>
闭包是什么,如何使用?
查看>>
堆排序Java实现(递归方式&非递归方式)
查看>>
GRU网络生成莎士比亚小说
查看>>
一次读锁重入导致的死锁故障
查看>>
如何使用Kubernetes里的NetworkPolicy
查看>>
图像风格转移
查看>>
ReactNative集成百度语音合成
查看>>
记一次企业级存储规划及重大事故
查看>>
微信小程序Markdown渲染组件wemark
查看>>
Dubbo分析之Serialize层
查看>>