栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

mysql shell是什么(mysql写shell)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql shell是什么(mysql写shell)

基于mysql 5.x  大家一般都是通过mysql 客户端来管理MYSQL ,但基于ORACLE 对于MYSQL 8 整体的规划,如果仅仅基于 mysql 客户端命令来操作MYSQL 8 则就有点,不与时俱进了,上个系列从performance_schema说起还差一篇关于MYSQL 索引的问题,然后就告一段落了,那么后面会围绕着 MYSQL SHELL ,以及MYSQL 锁,锁的探查,以及问题的解决产生一个新的系列     

基于MYSQL 8 后ORACLE 加大在MYSQL 各个方面的周边产品的研发,MYSQL SHELL 作为最新的控制和管理MYSQL 的一个方式的选择。

首先我们的安装我们的MYSQL SHELL ,mysql shell 一个有意思的地方是他与我们的MYSQL 的版本同时发布,如果有MYSQL 8.027 就有MYSQL shell 8.027 这个版本。

https://downloads.mysql.com/archives/shell/

1        直接运行 yum -y install mysql-shell-8.0.27-1.el7.x86_64.rpm

2        在安装完毕后,直接运行 mysqlsh 就进入到对应的环境中

3  常用的命令

在使用mysqlshell 的情况下我们一般使用的方式是在使用的命令前加斜杠

作为你要输入命令的开头。

connect 的命令是在mysqlsh中连接你的mysql数据
history 为展示你曾经执行的命令的回放
js 切换到javascript  命令中

py 切换到 python的状态中

sql 切换到 SQL 语句的状态

mysqlshell 支持3中方式来管理你的MYSQL
nowarnings w  关闭警告
q  为退出你的操作界面

reconnect 重新对数据库进行连接

rehash    更新自动补齐名字的缓存

status    打印连接信息

use      连接数据库中的其他数据库

warnings  打开告警

在进行操作之前我们可以创建一个用于操作的账号

create usertest@'%' identified by '1234.Com';

grant all on *.*to test@'%';

4  准备通过mysql shell 的方式连接MYSQL

mysqlsh --sql--uri=test@192.168.198.101 -P3306 -p1234.Com -D mysql –vertical

5  通过SQL方式连入到MYSQLSHELL 后我们通过第一个简单的命令就可以获得我们的MYSQL上的一些统计信息,status

6  在MYSQL 中运行一些LINUX 系统的命令,这个功能对于时长需要在系统和数据库之间进行工作的人比较方便

system  linux 命令

system ls /data

7连接的方式的不同,针对MYSQL SHELL 连接MYSQL的不同主要在于MYSQLSHELL 提供了更多的功能,如PYTHON JAVAscript 等,这样的连接的方式是使用 X  Protocol 的方式来进行连接的方式,在连接前可以通过—mx 来标注你要用X协议的方式来连接,--mc则是使用老式传统的方式来对数据库进行连接。

8 查询数据的格式问题

Mysqlsh展示数据的方式主要有三种

1   针对json 数据的 josn pretty

2   针对传统数据的 table

3   针对传统数据的 vertical

mysqlsh--uri=test@192.168.198.101 -P3306 -p1234.Com -D world_x --sql -e "SELECtName,District, JSON_EXTRACT(info, '$.Places_of_interest[?].name') as SightsFROM world_x.city WHERe JSON_EXTRACT(info, '$.Places_of_interest') IS NOTNULL" --json=pretty

mysqlsh--sql  --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECt Name as Sights FROMworld_x.city limit10" --table

mysqlsh--sql  --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECt Name as Sights FROMworld_x.city limit10" – vertical

9  通过PYTHON 来控制数据库

在MYSQLShell 的操作中可以通过python的代码来控制我们的数据库服务器系统,实际上我们通过X DEVAPI 来控制和掌握MYSQL 数据库系统。通过这个方法可以更有效的控制数据库中的关系数据类和方法,以及处理JSON文档对象。mysqlshell 提供了众多的操作数据库的函数来在py的环境下操作数据库,方便了开发者。

下面通过一些案例来进行操作

1  建立连接串,将连接的信息进行打包,

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

my_session = mysqlx.get_session(user_info)

通过get_session 的函数获取数据库的连接

2   获取当前数据库中的数据库列表

my_db = my_session.get_current_schema();

my_db = my_session.get_schemas()

3   获得当前连接的情况,是打开,还是关闭,可以关闭连接

my_session.isopen()

mysql_sesion.close()

4  获得当前的数据库,并执行SQL 

my_db = my_session.set_current_schema('test')

下面我们通过一个综合性的操作来结束mysql shell 的文字

#引入一个创建表的变量并赋值

CREATE_TBL = """

CREATE TABLE `test`.`info` (

`id` int auto_increment,

`sensor_name` char(30) NOT NULL,

`sensor_value` float DEFAULT NULL,

`sensor_event` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

CURRENT_TIMESTAMP,

`sensor_units` char(15) DEFAULT NULL,

PRIMARY KEY `sensor_id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

"""

#针对要查询的字段进行赋值

COLUMNS = ['sensor_name', 'sensor_value', 'sensor_units']

#复制连接字符串

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

#建立连接

my_session = mysqlx.get_session(user_info)

#  连接到test 数据库

my_db = my_session.set_current_schema('test')

#  执行SQL 创建表

sql_res = my_session.sql(CREATE_TBL).execute()

#获得操作表的变量

my_tbl = my_db.get_table('info')

# 插入数据

my_tbl.insert(COLUMNS).values('paint_vat_temp', 32.815, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('tongue_height_variance', 1.52, 'mm').execute()

my_tbl.insert(COLUMNS).values('ambient_temperature', 24.5, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('gross_weight', 1241.01, 'pounds').execute()

print("nShowing results after inserting all rows.")

#获得整体表的数据

my_res = my_tbl.select(COLUMNS).execute()

#打印数据

for row  in  my_res.fetch_all():

    print row

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号