5.1 活动语言

MySQL Shell 可以执行 SQL、JavaScript 或 Python 代码,但一次只能使用一种语言。主动模式决定了执行语句的处理方式:

  • 如果使用 SQL 模式,语句将作为 SQL 处理,这意味着它们将被发送到 MySQL 服务器执行。

  • 如果使用 JavaScript 模式,语句将作为 JavaScript 代码处理。

  • 如果使用 Python 模式,语句将作为 Python 代码处理。

笔记

从版本 8.0.18 开始,MySQL Shell 使用 Python 3。对于包括系统支持的 Python 3 安装的平台,MySQL Shell 使用可用的最新版本,最低支持的 Python 3.4.3 版本。对于不包含 Python 3 的平台,MySQL Shell 捆绑了 Python 3.7.4。MySQL Shell 保持与 Python 2.6 和 Python 2.7 的代码兼容性,因此如果您需要这些旧版本之一,您可以使用适当的 Python 版本从源代码构建 MySQL Shell。

当以交互模式运行 MySQL Shell 时,通过输入以下命令激活特定语言:\sql, \js, \py

以批处理模式运行 MySQL Shell 时,通过传递以下任何命令行选项来激活特定语言: --js, --py--sql. 如果未指定,则默认模式为 JavaScript。

使用 MySQL Shell 将文件内容 code.sql作为 SQL 执行。

$> mysqlsh --sql < code.sql

使用 MySQL Shell 将文件内容 code.js作为 JavaScript 代码执行。

$> mysqlsh < code.js

使用 MySQL Shell 将文件内容 code.py作为 Python 代码执行。

$> mysqlsh --py < code.py

从 MySQL Shell 8.0.16 开始,您可以在另一种语言处于活动状态时执行单个 SQL 语句,方法是输入 \sql紧跟 SQL 语句的命令。例如:

mysql-py> \sql select * from sakila.actor limit 3;

SQL 语句不需要任何额外的引号,语句分隔符是可选的。该命令仅在一行中接受单个 SQL 查询。使用这种格式,MySQL Shell 不会像您输入 \sql命令那样切换模式。SQL 语句执行后,MySQL Shell 仍处于 JavaScript 或 Python 模式。

从 MySQL Shell 8.0.18 开始,您可以在任何语言处于活动状态时执行操作系统命令,方法是输入 \system\!命令,紧接着输入要执行的命令。例如:

mysql-py> \system echo Hello from MySQL Shell!

MySQL Shell 显示操作系统命令的输出,如果无法执行命令则返回错误。