SaltStack工具中MySQL的模塊返回值問題解決

因爲管理系統中對mysql管理的開發中用到了saltstack集成的mysql模塊其中一個主要的功能是 mysql.query python

官方文檔中的兩個示例:mysql


salt.modules.mysql.query(database, query, **connection_args)sql

Run an arbitrary SQL query and return the results or the number of affected rows.python2.7

CLI Example:ide

      salt '*' mysql.query mydb "UPDATE mytable set myfield=1 limit 1"測試

       Return data:ip

           {'query time': {'human': '39.0ms', 'raw': '0.03899'}, 'rows affected': 1L}ci


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 這一項。

相關文章
相關標籤/搜索