您可以使用任一支援的指令碼語言 (JavaScript 和 Python) 為 MySQL Shell 建立並註冊使用者定義的報告。報告功能會使用相同的 API 前端架構來處理內建報告和使用者定義的報告。
報告可以指定其接受的特定選項清單,並且也可以接受指定數量的其他引數。您的報告可以支援這兩者、其中之一或都不支援。當您請求報告的說明時,MySQL Shell 會提供選項和引數的清單,以及註冊報告時提供的任何可用描述。
要註冊為 MySQL Shell 報告的 Python 或 JavaScript 函式簽章必須如下:
Dict report(Session session, List argv, Dict options);
其中
session
是要用於執行報告的 MySQL Shell 工作階段物件。argv
是包含傳遞至報告的其他引數字串值的選用清單。options
是具有對應於任何報告特定選項及其值的鍵名稱和值的選用字典。
報告函式預期會以特定格式傳回資料,具體取決於您註冊時使用的類型
- 清單類型
以清單的清單形式傳回輸出,第一個清單包含欄位的名稱,其餘為列的內容。預設情況下,MySQL Shell 會以表格格式顯示輸出,如果
\show
或\watch
命令指定了--vertical
或--E
選項,則以垂直格式顯示輸出。列的值會轉換為項目的字串表示法。如果某列的元素少於欄位名稱的數量,則會將遺失的元素視為 NULL。如果某列的元素多於欄位名稱的數量,則會忽略多餘的元素。當您註冊此報告時,請使用類型 「list」。
- 報告類型
以包含單一項目的清單形式傳回自由格式的輸出。MySQL Shell 會使用 YAML 顯示此輸出。當您註冊此報告時,請使用類型 「report」。
- 列印類型
直接將輸出列印到螢幕,並將空清單傳回 MySQL Shell 以表示輸出已顯示。當您註冊此報告時,請使用類型 「print」。
若要提供輸出,報告的 API 函式必須傳回具有索引鍵 report
的字典,以及 JSON 物件的清單,每個傳回清單中的項目一個。對於清單類型,每個清單使用一個元素,對於報告類型,使用單一元素,對於列印類型,則不使用任何元素。