前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL SHELL 到底是个什么局 剑指 “大芒果”

MYSQL SHELL 到底是个什么局 剑指 “大芒果”

作者头像
AustinDatabases
发布2020-03-26 15:40:47
6740
发布2020-03-26 15:40:47
举报

如果在WINDOWS上想链接在LINUX上的MYSQL有什么方法,windows上各种GUI,还是打开MYSQL那个原本黑漆漆的小方格。现在你有了新的选,MYSQL Shell 全新的连接MYSQL 的方式,一个满足各种人群连接MYSQL的方式。从官方上下载后,在WINDOWS 上解压后,直接点击执行。

双击mysqlsh

为什么要有mysql shell,这是ORACLE 的一个计划,这个工具支持社区和企业版的MYSQL,首先这个工具并不是只针对DBA,或者说白的,他的对象是更广阔的开发人员和会写程序的DBA们。

下图就是ORACLE 对MYSQL Shell 的定位。

怎么说,如果用过MONGODB的话,就深有体会会JS的优点,操作MONGODB 可以入行云流水一般。,那mysql shell的功能可是要更广,看下图。

原理先不多讲,直接使用, 目前MYSQL Shell 自带了PYTHON3.7 ,以下的案例大部分在 Python中调用一些 MYSQL SHELL 的命令,最后在总结。

打开下载的文件,其中有一个可以执行的文件

双击然后\py, 然后输入 连接 mysql 的连接字符串, \connect -mc 用户名:密码@IP或域名:端口号

然后就进来了。

\connect -mc shell:1234.Com@192.168.198.210:3306

另外下面是一个例子,如何使用 mysql shell 中的 py模块来遍历一下数据库的库名。

from mysqlsh import mysqlx

mySession = mysqlx.get_session('shell:1234.Com@192.168.198.210')

schemaList = mySession.get_schemas()

print('Available schemas in this session:\n')

for schema in schemaList:

print(schema.name)

mySession.close()

写到这里,我个人的感觉没有对这个shell of mysql有一个整体的了解,不了解的原因没有从ORACLE 整体的观点来看这个mysql shell, 他到底要服务于什么人群,目的是什么。

从上面的英文介绍来看,MYSQL SHELL 并不是要替换我们现在常用的已知的方式。MYSQL SHELL 面对的人群

1 程序员,尤其不会写SQL 语句的那些人

2 自动化,或者想他通过程序的方式来自动化管理MYSQL 一部分功能的人

3 将MYSQL 部分管理简单化得人,尤其与集群方面有关(个人感觉,就是要简化操作,继续降低MYSQL 的操作复杂度)

在说白一点,MYSQL的野心是不小的,他首先的目标要开始转向 Document store. 说白了MYSQL 8 要开始分割 MONGODB 的市场,尤其是轻量级使用MONGODB 的那部分,然后你习惯,在依赖。为什么可以从官方给的例子来说的名字,我们只有对MONGODB 的表的称呼叫 collection,看看MYSQL 对二维表格的文档的操作叫什么。

然后就是面对自己的高可用的业务,INNODB CLUSTER 和 Group Replication ,将高可用的方式进一步程序化。

下面看几个CRUD 的例子

from mysqlsh import mysqlx

mySession = mysqlx.get_session({'host': '192.168.198.210', 'port': 33060,'user': 'shell', 'password': '1234.Com'})

myDb = mySession.get_schema('employees')

myTable = myDb.get_table('dept_emp')

myResult = myTable.select(['emp_no', 'dept_no']).limit(1).execute()

print(myResult.fetch_all())

上边是操作普通的表,实际上如果操作 JSON 文档有怎样

from mysqlsh import mysqlx

mySession = mysqlx.get_session({'host': '192.168.198.210', 'port': 33060,'user': 'shell', 'password': '1234.Com'})

myDb = mySession.get_schema('test')

myColl = myDb.create_collection('Mongo_json')

myColl.add({'_id': '1', 'name': 'Laurie', 'age': 19}).execute()

myColl.add({'_id': '2', 'name': 'Nadya', 'age': 54}).execute()

myColl.add({'_id': '3', 'name': 'Lukas', 'age': 32}).execute()

docs = myColl.find('name like :param1 AND age < :param2').limit(1).bind('param1','L%').bind('param2',20).execute()

doc = docs.fetch_one()

print(doc)

myDb.drop_collection('my_collection')

从上边的例子来看,PYTHON 操作下的MYSQL 活脱脱的变成让我有点熟悉的MONGODB

此时脑洞来了忽然理解了,MYSQL 8 真的不简单,不是5.8 是8是有道理的野心不小,MYSQL 再也不是那个“单纯”的孩子。

这是要做一个生态,让MYSQL 借程序员之手,要开始大举进攻 JSON 半结构化得市场,要和谁争地盘不言而喻了。并且这样的方式操作起来,还真叫人喜欢。如果推广开来,那........

因为MYSQL SHELL 并不光支持PYTHON ,还有JS 那是 MONGODB 操作的根本语言。

在看看 X DevAPI 的help 。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档