PostgreSQL语言AST和语句美化器

pglast的Python项目详细描述


简介

在较低的层次上,模块公开两个libpg_查询函数, parse_sql() parse_plpgsql() ,分别接受一个 sql 语句和一个 plpgsql 语句 并返回一个 解析树 作为python字典、列表和标量值的层次结构。在 有些情况下,这些标量对应于一些c typedef枚举,这些枚举是自动的 从上面提到的postgresql头中提取,并作为 pglast.enums 提供。

在更高的层次上,树由三个python类表示,一个表示 一个单独的节点,a 列表 包装一系列节点,a 标量 用于简单值,例如 a 字符串 整数 布尔值

每个节点都由一个 标记来标识,该标记是一个字符串标签,用于描述其内容,即 显示为一组 属性以及字典式接口(技术上是 实现一个 \uu getattr\uu 方法和一个 \uu getitem\uu 方法)。当被要求 属性,该节点返回基类的一个实例,即另一个 节点或 list 或a scalar ,具体取决于该项的数据类型。当节点没有 包含请求的属性,它返回一个丢失的标记实例。

a list 包装一个普通的python list 并可能包含一系列节点实例,或者 在某些情况下,可以使用常用语法访问或迭代的其他子列表。

最后,a 标量 携带某种类型的单个值,可通过其 值访问。 属性。

除此之外,模块还实现了两个序列化,一个将 节点 转换为 raw 文本表示法和另一种返回经过美化的表示法的表示法。后者 由 pgpp cli工具公开,请参见下面的示例。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?