px普贤教程PuXian
普贤教程 › 包参考

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_parsesql
其余 15 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
sq_is_ident_startc
sq_is_ident_partc
sq_is_digitc
sq_tokenizesql
sq_clause_kwtoks, p
sq_is_kwt, kw
sq_peektoks, pos
sq_parse_primarytoks, pos
sq_parse_cmptoks, pos
sq_parse_andtoks, pos
sq_parse_exprtoks, pos
sq_parse_selectsql
sq_get_tablessql
sq_get_columnssql
sq_is_selectsql

包内说明(源码头注释)

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 分类