普贤教程 › 包参考
sqlparse 包
SQL SELECT 子集解析(AST)
| 项 | 值 |
|---|---|
| 包名 | sqlparse |
| 版本 | 0.2.0 |
| 可用版本 | 0.1.0 / 0.2.0 |
| 入口 | sqlparse.px |
| 分类 | 数据格式与编解码 |
| 文件数 / 行数 | 1 / 335 |
安装与引入
bash
pxpkg init # 首次 pxpkg add sqlparse@0.2.0 pxpkg install
px
import sqlparse所属分类教程:数据格式与编解码
公开接口
| 函数 | 参数 |
|---|---|
sq_parse | sql |
其余 15 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
sq_is_ident_start | c |
sq_is_ident_part | c |
sq_is_digit | c |
sq_tokenize | sql |
sq_clause_kw | toks, p |
sq_is_kw | t, kw |
sq_peek | toks, pos |
sq_parse_primary | toks, pos |
sq_parse_cmp | toks, pos |
sq_parse_and | toks, pos |
sq_parse_expr | toks, pos |
sq_parse_select | sql |
sq_get_tables | sql |
sq_get_columns | sql |
sq_is_select | sql |
包内说明(源码头注释)
text
============================================================
普贤生态库:registry/sqlparse —— SQL SELECT 子集解析(AST)
------------------------------------------------------------
纯函数库(无 IO、无状态),编译(px build)与解释(px run)双模式一致。
对应缺口表「SQL 解析器」的 SELECT 子集(parser 之上,自实现递归下降):
sq_parse(sql) → Ok(ast) | Err
支持:
SELECT [DISTINCT] select_list [FROM table [AS alias]]
[WHERE 表达式] [ORDER BY 列 [ASC|DESC], ...] [LIMIT n]
select_list = 表达式 [AS 别名], ...(支持 *)
表达式:比较(= <> != < > <= >=)+ AND/OR/NOT + 括号;
初级量:标识符 / 数字 / 字符串 / 函数名(参数…)
AST 形态(示例):
{"type":"select", "distinct":false,
"columns":[{"expr":{"type":"ident","name":"id"},"alias":""}],
"from":{"table":"users","alias":""},
"where":{"type":"op","op":"and","left":{"type":"op","op":">=",...},"right":...},
"order_by":[{"expr":{"type":"ident","name":"age"},"dir":"desc"}],
"limit":10}
说明:仅 SELECT(无 INSERT/UPDATE/DELETE/JOIN/子查询/函数解析为名字节点)。
============================================================
---- 词法 ----
单字符 token 分类