跳转到内容

Database 数据库节点

Database 节点用于在工作流中直接访问关系型数据库。通过配置连接信息和需要执行的 SQL 语句,你可以在流程中读取业务数据、生成报表、或将AI产出的内容写入数据库,从而让FlowAI与现有系统无缝协作。

节点适用场景

  • 数据拉取:查询 CRM、订单、库存等核心系统,为后续分析或提示词提供及时数据。
  • 结果回写:将工作流产出的文本、结构化数据写回数据库,形成闭环。
  • 自动化巡检:定时执行健康检查或统计语句,结合通知节点推送异常。
  • 变量驱动查询:在 SQL 中引用上游节点输出,动态生成查询条件,满足个性化需求。

节点配置

连接配置

基础连接信息

  1. 节点名称

    • 为节点取一个易于识别的名称,如“查询订单库”或“写入日报”
    • 下游节点通过 $节点名称.result 引用执行结果
  2. 数据库类型

    • 目前支持 MySQLPostgreSQL
    • 根据实际库型选择,系统会自动使用对应的连接方式
  3. 主机与端口

    • host 填写数据库地址,可使用内网域名或公网IP
    • port 非必填;空置时会使用数据库的默认端口
  4. 数据库名称与凭证

    • database 指定目标库/Schema
    • usernamepassword 为具备所需权限的账号
    • 建议创建只读或最小权限账号,避免过度授权
  5. 变量插值

    • 所有输入字段均可使用 FlowAI 变量,例如 $开始.data.host
    • 节点会先解析变量后再建立连接,方便联动其他节点的输出

SQL 与输出格式

  1. SQL 语句

    • sql 字段填写需要执行的语句
    • 节点会根据语句类型自动识别是“查询”还是“写入/更新”
    • 查询语句(如 SELECTSHOWWITH 等)会返回结果集;其余语句返回受影响行数等信息
  2. 结果格式

    • 默认以 Markdown 表格形式输出,便于直接展示或发送通知
    • format 设置为 json 时,可获得包含 columnsrowstruncated 信息的结构化结果,适合后续编排使用
  3. 最大返回行数

    • max_rows 控制查询最多返回的记录数,默认 200 行,上限 5000 行
    • 超出限制时,节点会截断结果并在输出中标记,避免一次性拉取过多数据

超时与高级选项

  1. 执行超时

    • timeout_seconds 定义单次执行的最长等待时间,默认 30 秒
    • 超时会中断执行并返回错误,确保工作流不会长时间阻塞
  2. SSL 与其它参数

    • 对于 PostgreSQL,可通过 ssl_mode 控制连接方式(如 disablerequire
    • options 支持附加额外的连接参数,使用键值对形式,例如 { "timezone": "Asia/Shanghai" }
  3. 连接可靠性

    • 节点会在执行前校验连接可用性,如无法建立连接会立即返回错误
    • 建议与循环或条件节点配合,统一处理失败重试逻辑

节点输出

  • $节点名称.result:当语句执行成功时返回的数据。
    • 查询语句默认输出 Markdown 表格,或在 json 模式下输出 { columns, rows, truncated } 结构。
    • 写入/更新语句返回包含 rows_affected、可能的 last_insert_id 等信息的对象或表格。
  • $节点名称.error:执行失败时填入错误信息,成功时为空字符串,便于与条件节点联动。

在后续节点中可以通过变量访问执行结果,例如:

最近订单:
{{$查询订单库.result}}

若采用 JSON 格式输出,下游节点可直接读取 $查询订单库.result 并在节点内部完成解析。

使用示例

示例:读取最新订单数据

  1. 在 Database 节点中填写:

    host: db.internal.local
    database: sales
    type: mysql
    username: report_reader
    password: ******
    sql: SELECT id, customer, total_amount FROM orders ORDER BY created_at DESC LIMIT 10;
    format: markdown table
  2. 将节点命名为“查询订单库”,后续在通知或LLM节点中插入 $查询订单库.result,即可展示最新订单列表。

  3. 若需要按日期筛选,可将条件节点输出的日期变量嵌入 SQL,例如 ... WHERE created_at >= '{{ $时间节点.result }}'

示例:写入工作流执行日志

  1. 将上游生成的总结内容保存到变量 $总结.result

  2. 在 Database 节点配置以下语句:

    sql: INSERT INTO workflow_logs (workflow_id, summary, created_at)
    VALUES ({{ $流程信息.id }}, '{{ $总结.result }}', NOW());
    format: json
  3. 执行完成后,查看 $写入日志.result 返回的内容以确认写入是否成功,并结合条件节点触发后续动作。

最佳实践

  • 划分账号权限:使用专门的读写账户,限制到所需的库与表。
  • 控制数据量:合理设置 max_rows,必要时在 SQL 中增加 LIMIT
  • 监控错误:在下游增加条件或通知节点,及时处理 $节点名称.error
  • 结合缓存:对于频繁查询的数据,可搭配变量节点或JSON处理节点缓存结果。
  • 记录超时:若经常遇到超时,建议优化 SQL 或在数据库侧使用索引。