You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible遍历注册的SQL查询结果并筛选指定节点的方法

你可以借助Jinja2的selectattr过滤器实现动态属性筛选,不需要依赖固定索引,写法如下:

实现代码

- name: 仅输出CHID为M0005的节点内容
  debug:
    var: m0005_item
  vars:
    # 逐层筛选匹配项,无匹配时默认返回None
    m0005_item: "{{ result.query_result[0] | selectattr('CHID', 'equalto', 'M0005') | first | default(None) }}"
  # 仅当存在匹配项时执行输出,无匹配时任务自动跳过
  when: m0005_item is not none

代码逻辑说明

  • result.query_result[0]:获取SQL返回的所有行数据所在的内层列表
  • selectattr('CHID', 'equalto', 'M0005'):遍历列表,筛选出CHID字段值为M0005的所有元素
  • first:取第一个匹配的元素(如果存在多个匹配项也仅返回第一个)
  • default(None):无匹配结果时默认返回None,避免筛选为空时抛出异常
  • when条件:保证只有匹配到目标节点时才输出内容,无匹配时任务直接跳过

如果需要直接提取目标节点的指定字段,比如要获取VALUE的值,可以参考以下写法:

- name: 提取M0005节点的VALUE值
  debug:
    msg: "M0005对应的VALUE为:{{ m0005_value }}"
  vars:
    m0005_value: "{{ result.query_result[0] | selectattr('CHID', 'equalto', 'M0005') | map(attribute='VALUE') | first | default('') }}"
  when: m0005_value != ''

内容的提问来源于stack exchange,提问作者Andrew Ramnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:27:03