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

由于管理系统中对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 这一项。

本文出自 “影子骑士” 博客,请务必保留此出处http://andylhz2009.blog.51cto.com/728703/1951339

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

标签:mysql   管理系统   saltstack

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://andylhz2009.blog.51cto.com/728703/1951339

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值