5.8.2.3 Обработка типов данных
В общем случае, тип данных аргумента определяется по следующим критериям, в порядке приоритета:
Ожидаемый тип данных для целевого параметра.
Тип данных значения на основе спецификации JSON.
Тип данных, указанный пользователем.
Последний случай является сложным (и редким) и применим только для именованных аргументов. Например, предположим, что у вас есть функция плагина MySQL Shell, такая как:
def set_object_attributes(variables)
Где variables — это словарь без предопределённого набора значений, поэтому он принимает любой ключ и, следовательно, любой тип данных для значения. Для задания строкового атрибута с именем streetNumber со строковым значением 123 используйте:
$ mysqlsh -- plugin set-object-attributes --streetNumber=123
Поскольку ожидаемого типа данных нет, значение 123 интерпретируется как числовое значение в соответствии со спецификацией JSON, но мы хотели сохранить его как строку, а не как число.
В настоящее время нет примера функции API такого рода, если только пользователь не создаёт плагин, как описано выше.
5.8.2.3.1 Типы данных пользователя
Чтобы избежать проблем с MySQL Shell, пытающимся угадать тип входных данных, интеграция командной строки поддерживает принудительное задание определённого типа данных путём указания именованного аргумента с помощью следующего синтаксиса:
--key:type=value
Где type может быть одним из следующих:
str
int
uint
float
bool
list
dict
json
Для сохранения значения как строки используйте:
$ mysqlsh -- plugin set-object-attributes --streetNumber:str=1234
Этот формат разрешён для любого именованного аргумента, но требуется только тогда, когда для аргумента нет ожидаемого типа данных. Если для параметра задан ожидаемый тип данных, и вы указываете другой тип данных, будет выдано сообщение об ошибке.
5.8.2.3.2 Разрешение типов данных
Если вы не указываете тип данных, MySQL Shell пытается определить тип данных, используя следующий алгоритм. Эта логика интерпретации данных основана на спецификации JSON, но имеет некоторые специфичные для MySQL Shell дополнения и ограничения:
-
Строки:
Поддерживаются как двойные кавычки, так и одинарные кавычки.
Поддерживаются шестнадцатеричные числа, такие как
\x, гдеNNNN— шестнадцатеричная цифра. Это используется для представления символов ASCII в шестнадцатеричном формате.Поддержка экранированного символа вертикальной табуляции
Также могут быть определены следующие литералы:
undefined: определяет значение как неопределённое (в консоли оно не очень нужно, поэтому его использование не рекомендуется).
true/false: создаёт булево значение.
null: определяет значение null.
Любое значение, не охваченное спецификацией JSON и вышеуказанными правилами, интерпретируется как обычная строка.
© 2025 Oracle
Licensed under the GPLv2 License.