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

本文探讨了在使用SaltStack的MySQL模块时遇到的查询返回值问题,特别是`mysql.query`函数在处理非SELECT语句时的显示。通过分析源代码并添加对EXPLAIN的支持,实现了期望的结果输出。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值