MySQL Shell是一个功能强大的工具。它允许Javascript,Python和SQL访问MySQL。
可以使用MySQL Shell
1.作为MySQL Server的管理工具
2.作为运行Javascript或Python或SQL的脚本引擎,以访问MySQL Server
3.作为允许通过MySQL Server
4 访问文档存储(如集合API)的工具。由于MySQL InnoDB Cluster管理工具
自定义和可扩展框架对于工具至关重要,因为此类数据库管理员可以创建自定义的报告和扩展来执行日常工作。
编写本教程的目的是提供一个简短摘要,介绍如何使用Python创建MySQL Shell报告。
什么是MySQL Shell报表?
MySQL Shell报表可以通过“ \ show”执行

MySQL Shell附带3个“报告”,即“查询”,“线程”,“线程”。
查询报告:
通过报告获取“帮助”可以简单地运行“ \ show query --help”

通过连接的会话运行报告,这样查询将被执行并打印在屏幕上(例如,运行“ SELECT 1”查询)

使用Python创建新报告-数据库大小
MySQL Shell允许基于$ HOME / .mysqlsh / plugins /文件夹进行自定义
启动MySQL Shell时,它将在“ plugins”中查找所有初始化脚本(init.py / init.js)。 ”文件夹。
文件:$ HOME / .mysqlsh / plugins / ext / dbutil / init.py
#函数定义如下:show_dbsize(3个参数)
def show_dbsize(会话,参数,选项):
query =“ SELECT table_schema AS'Database',ROUND(SUM(data_length + index_length)/ 1024/1024,2)AS 'Size(MB)',count(table_name)as'tables of table'from information_schema.TABLES GROUP BY table_schema“
if(options.has_key('limit')):
query + ='limit'+ str(options ['limit '])
结果= session.run_sql(query);
report = []
if(result.has_data()):
report = [result.get_column_names()]
for result.fetch_all()中的行:
report.append(list(row))
return {“ report”:
shell.register_report(“ dbsize”,“ list”,show_dbsize,
{
“ brief”:“列出没有主键的表。”,
“详细信息”:['您需要对INFORMATION_SCHEMA.TABLES和INFORMATION_SCHEMA.STATISTICS拥有SELECT特权。 '],
'options':[
{
'name':'limit',
'brief':'要返回的最大行数。',
'shortcut':'l',
'type':'integer'
}
],
'argc':'0'
}
)
在$ HOME / .mysqlsh / plugins / ext / dbutil / init.py下创建文件后,MySQL Shell将查找NEW报告,而“ \ show”将显示添加的“ dbsize”报告。

使用CONNECTED会话,然后运行报告可以简单地执行“ \ show dbsize”

我们在Python init.py中放入了OPTION“ limit”。要仅显示3行,可以如下所示添加选项(-l 3)。

享受阅读!
原文链接:http://mysqlhk.blogspot.com/2020/04/writing-mysql-shell-plugin-report.html




