SuperAPI AI 工具集

frappe-syntax-query-builder

数据与分析

查看项目

更新于 10-15 22:17

技能介绍

用途:在 Frappe v14-v16 中用 frappe.qb 查询构建器编写数据库查询,适合需要连接、聚合、子查询等复杂查询,或需要跨数据库兼容的场景;简单取值或列表查询建议使用 frappe.db.get_value()、frappe.get_all(),无法用 qb 表达的极复杂 SQL 可用 frappe.db.sql() 并始终参数化。

主要能力:SELECT、WHERE、ORDER、LIMIT/OFFSET、JOIN、COUNT 等聚合、INSERT、UPDATE、DELETE,以及 DocType、Field、Count/Sum/IfNull、ConstantColumn、GROUP_CONCAT、SubQuery、ImportMapper、CustomFunction、Order 等导入与用法;支持过滤条件如等值、OR(|)、链式 AND、like、isin、区间[start:end]、isnull/isnotnull、比较运算。聚合可用快捷方法 frappe.qb.sum 与 frappe.qb.max。

使用方式:表引用必须用 DocType("Sales Order") 而非 Table(),字段可用 dt.field 或 Field("field");执行用 .run() 返回元组、.run(as_dict=True) 返回字典;取 SQL 字符串用 query.get_sql(),不要传给 frappe.db.sql()。跨库用 ImportMapper({db_type_is.MARIADB: X, db_type_is.POSTGRES: Y}),例如 GroupConcat 映射 GROUP_CONCAT/STRING_AGG。

限制与注意:不要把 qb 查询传给 frappe.db.sql(),不要用 Table(),不要忘记 .run(),不要在 frappe.get_all(fields=[...]) 中用原始 SQL 字符串;需要字典时必须 as_dict=True;数据库特定函数应使用 ImportMapper。版本差异:核心 qb API v14 引入,v15、v16 沿用;ImportMapper 各版本均有;SQLite 后端与掩码字段为 v16 新增;Union 查询(.walk)v15 新增;子查询执行为 v16 新增。更多函数、迁移与跨库模式参见 Functions & Aggregates、Migration Guide、Cross-DB Patterns 参考文件。