結果的資料定義由以下元素組成
欄位中繼資料:欄位名稱及其類型。這可以自動或手動定義。
資料:結果的記錄。
data
中定義的第一個字典用於自動判斷欄位中繼資料。此字典包含以下內容
名稱:由字典中的每個鍵定義。
類型:每個鍵的值。
結果中繼資料的自動定義有以下限制
您無法定義每個欄位使用的資料類型。
您無法定義結果中的欄位順序。
名稱和類型是唯一可用的欄位中繼資料。
結果中的欄位類型和值表示方式由語言支援對應
表 10.2 JavaScript 欄位和結果值類型對應
JavaScript 值 | 預設欄位類型 | 結果值類型 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 或 1 |
|
|
|
|
|
|
|
|
|
|
DATETIME |
|
表 10.3 Python 欄位和結果值類型對應
Python 值 | 預設欄位類型 | 結果值類型 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 或 1 |
|
|
|
|
|
|
|
|
|
|
DATE |
|
|
TIME |
|
|
DATETIME |
|
以下顯示自動欄位定義的範例
@sql_handler(prefixes=["SHOW FILES"])
def show_files(session, sql):
files = [{'path': file, 'length': os.stat(file).st_size} for file in os.listdir()]
return mysqlsh.globals.shell.create_result({'data': files})
用法
SQL> show files;
+---------+----------------+
| length | path |
+---------+----------------+
| 420 | sample_file.tx |
| 50 | readme.txt |
+---------+----------------+
3 rows in set (0.0000 sec)
您可以使用 columns
屬性定義中繼資料。此屬性定義欄位順序,並且可以用來覆寫預設欄位類型。
columns
定義為一個清單,其中包含定義欄位名稱的字串,或包含以下一個或多個內容的字典
name
:(必要)結果中欄位的名稱。type
:(可選)欄位值的預期類型。允許的值為string
、integer
、float
、json
、date
、time
、datetime
和bytes
flags
:(可選)以逗號分隔的其他旗標清單(字串)。blob
、timestamp
、unsigned
、zerofill
、binary
、enum
和set
。length
:(可選)長度,以位元組為單位。
以下顯示手動欄位定義的範例
@sql_handler(prefixes=["SHOW FILES"])
def show_files(session, sql):
files = [{'path': file, 'length': os.stat(file).st_size} for file in os.listdir()]
metadata = [{'name': 'path', 'type': 'string'}, {'name': 'length', 'type': 'integer'}]
return mysqlsh.globals.shell.create_result({'columns', metadata, 'data': files})
用法
mysql-sql> show files;
+----------------+---------+
| path | length |
+----------------+---------+
| sample_file.tx | 420 |
| readme.txt | 50 |
+----------------+---------+
3 rows in set (0.0000 sec)