跳轉到
版本 v1.0.25

MySQL 任務

這頁能幫你做什麼

MySQL 任務讓你在工作流程 (Workflow) 的某個步驟,直接對 MySQL 資料庫下 SQL 指令,把查到的資料帶進後續步驟使用。常見情境:

  • 依使用者輸入查訂單、客戶、庫存或產品資料。
  • 撈出資料庫裡的事實資訊,餵給後面的大型語言模型 (LLM) 當依據,讓回答有所本。
  • 依工作流程的處理結果更新資料表(如更新訂單狀態)或新增一筆記錄。

開始前

這個任務需要一個 MySQL 類型的連結器 (Connector),裡面存放資料庫的連線資訊(主機、帳號、密碼等)。請先到 連結器資源頁 建立好,再回到這裡選用。連線敏感資訊集中放在連結器裡較安全,不要寫在 SQL 裡。若你打開「連結器」對話框時清單是空的,代表還沒有任何 MySQL 連結器,需先建立一個(需相應權限)才能繼續。

操作步驟

  1. 在工作流程編輯器中新增一個 MySQL 任務節點,點選它開啟右側設定表單(如何新增請見 任務使用指南)。

    MySQL 任務設定面板

  2. 在「名稱」填一個好辨識的步驟名稱。

  3. 在「連結器」欄位選擇前面建好的 MySQL 連結器。這個欄位是一個下拉選單()+右側一顆鉛筆鈕(

    • 點欄位本體只會展開一般下拉清單,直接選也可以。
    • 鉛筆鈕會開啟資源選擇對話框(含搜尋框、 重新載入、 新增,以及只列出 MySQL 類型連結器的清單)。在清單點選要用的連結器後,必須按右上角的「儲存」才會套用;按「取消」或直接關掉對話框都不會生效。選取時請點該列「名稱」以外的任一格(或列前面的圓鈕)——點「名稱」會在新分頁開啟該連結器的詳細頁,不會選取它(見資源挑選欄位)。

    點連結器欄位的鉛筆鈕後開啟的連結器選擇對話框,右上角有取消與儲存按鈕

  4. 在「資料庫」填要查詢的資料庫名稱。

  5. 在「SQL 查詢」編輯器寫下 SQL 指令,需要動態帶值的地方用佔位符(見下方說明)。
  6. 若 SQL 有佔位符,在「SQL 參數」填入對應的值。預設是一張「名稱/值」表格(按 新增列),適合具名佔位符 %(param_name)s;若用的是位置佔位符 %s,要先打開這個欄位的「JSON」開關改成 JSON 編輯器,才能填陣列(見下方說明)。
  7. 設定「下一個狀態」,視需要填「附註」。
  8. 用表單上方的「測試任務」按鈕()試跑,確認回傳的資料符合預期。

完整欄位說明

下表只列 MySQL 任務特有的欄位。名稱、附註、下一個狀態、輸入與輸出、錯誤處理等所有任務共用的分區,請見 任務通用設定。MySQL 任務的設定分頁底部只有「執行設定」一個摺疊區塊,沒有「進階任務設定」,不用去找。

欄位 必填 預設 說明
連結器 選擇要連線的 MySQL 連結器資源。欄位是下拉選單+右側鉛筆鈕,點鉛筆會開啟資源選擇對話框(含搜尋框、清單、 重新載入、 新增,以及「取消/儲存」兩顆按鈕),只會列出 MySQL 類型的連結器;選完要按「儲存」。連線資訊由連結器提供,不在此重填。此欄位支援 JSONPath 動態輸入開關,可切換成從工作流程輸入動態帶入連結器。建立方式見 連結器資源頁
資料庫 要對哪一個資料庫執行查詢,填資料庫名稱(如 customers_db)。可改用工作流程輸入動態帶入。
SQL 查詢 要執行的 SQL 指令,支援 SELECT、INSERT、UPDATE、DELETE。是一個內嵌在表單裡的程式碼編輯器(附自動換行、複製、下載、在對話方塊中編輯等工具鈕)。需要動態帶值的地方請用佔位符,不要直接把變數串進字串(避免 SQL Injection)。支援兩種佔位符寫法(見下方說明)。
SQL 參數 空表格 對應 SQL 查詢中佔位符的實際值,是常駐在設定分頁上的一張「名稱」表格(按 新增列),非摺疊區。把滑鼠移到這個欄位上,標籤右側會出現「JSON」與「JSONPath」開關;打開「JSON」可改用 JSON 編輯器直接填整包物件或陣列。寫法須與佔位符對應(見下方說明)。

SQL 佔位符與參數寫法

SQL 查詢支援兩種佔位符,「SQL 參數」的格式必須與你採用的佔位符一致:

  • 具名佔位符 %(param_name)s(建議,最好填):參數值要用「物件(字典)」,依名稱對應,例如查詢 ... WHERE id = %(user_id)s 搭配參數 { "user_id": 123 }。這正好對應畫面預設的「名稱/值」表格——一列填一個參數,「名稱」填 user_id、「值」填 123
  • 位置佔位符 %s:參數值要用「陣列(列表)」,依 SQL 中的出現順序對應,例如查詢 ... WHERE id = %s AND status = %s 搭配參數 [123, "active"]陣列沒辦法用「名稱/值」表格表達,所以要先把滑鼠移到「SQL 參數」欄位上、打開右側的「JSON」開關,欄位會變成 JSON 編輯器,再把 [123, "active"] 貼進去。

參數值可以是寫死的固定值,也可以從工作流程輸入動態帶入。要動態帶入時,打開「SQL 參數」的「JSON」開關、用 { "user_id.$": "$.user_id" } 這種寫法——鍵名結尾要加 .$,平台才知道右邊那串是路徑而不是一段字面文字(這條規則與常見錯誤見 變數與資料引用,路徑寫法見 JSONPath 語法)。

不確定要用哪一種?用具名佔位符

值是固定值時,具名佔位符可以直接用畫面預設的「名稱/值」表格逐列填完,完全不必碰 JSON 模式,也不怕順序填錯,對第一次設定的人最好上手。

務必用參數,不要字串串接

安全寫法:SQL 寫 WHERE id = %(user_id)s,值交給「SQL 參數」帶入。 危險寫法:把使用者輸入直接拼進 SQL 字串(容易遭受 SQL Injection 攻擊)。

實際範例與預期結果

設定內容(採用具名佔位符):

  • 連結器:選一個 MySQL 連結器
  • 資料庫:customers_db
  • SQL 查詢:SELECT id, name, email FROM users WHERE id = %(user_id)s AND status = %(status)s
  • SQL 參數:因為 user_id 的值要從工作流程輸入動態帶入,這裡打開「JSON」開關寫成一包 JSON:

    {
      "user_id.$": "$.user_id",
      "status": "active"
    }
    

    鍵名結尾的 .$ 代表「這個值是一條路徑」(規則見 變數與資料引用)。若兩個值都是寫死的固定值,用畫面預設的「名稱/值」表格逐列填就好,不必切到 JSON。若改用位置佔位符 %s,SQL 要寫成 ... WHERE id = %s AND status = %s,同樣打開「JSON」開關、改填陣列 ["$.user_id", "active"]

工作流程輸入:

{
  "user_id": 12345
}

SELECT 查詢的測試輸出:

{
  "errors": null,
  "action_type": "mysql_action",
  "rows": [
    {
      "id": 12345,
      "name": "Alice Chen",
      "email": "alice@example.com"
    }
  ],
  "num_affected_rows": 1
}

UPDATE/INSERT 等不回傳資料列的指令,rows 會是空陣列,num_affected_rows 為受影響的列數:

{
  "errors": null,
  "action_type": "mysql_action",
  "rows": [],
  "num_affected_rows": 1
}

Note

輸出欄位以後端實際回傳為準:rows 為查詢回傳的資料列陣列,num_affected_rows 為受影響的列數,action_type 固定為 mysql_action。在後續步驟可用 JSONPath 取值,例如 $.rows[0].email

下一步