【Python百日进阶-Web开发-Peewee】Day275 - Peewee API文档 - 查询生成器组件

文章目录

    • 11.6 Query-builder Internals 查询生成器组件
      • 11.6.1 class AliasManager
      • 11.6.2 class State
      • 11.6.3 class Context
    • 11.7 常量和助手
      • 11.7.1 class Proxy

11.6 Query-builder Internals 查询生成器组件

11.6.1 class AliasManager

class AliasManager

管理 SELECT 查询中分配给Source对象的别名,以避免在单个查询中使用多个源时出现模糊引用。

add(source)

在当前范围内将源添加到 AliasManager 的内部注册表。别名将使用以下方案自动生成(其中每个缩进级别引用一个新范围):

参数: source(source)——让经理知道新的source。如果已经添加了源,则调用是无操作的。

get(source[, any_depth=False])

返回当前范围内源的别名。如果源没有别名,它将被赋予下一个可用的别名。

参数: source( Source ) – 应检索其别名的源。
返回: 已分配给源的别名,或下一个可用的别名。
返回类型: 字符串

setitem(source, alias)

在当前范围内手动设置源的别名。

参数: source( Source ) – 我们为其设置别名的源。

push()

将新范围压入堆栈。

pop()

从堆栈中弹出范围。

11.6.2 class State

class State(scope[, parentheses=False[, subquery=False[, **kwargs]]])

用于表示给定范围内状态的轻量级对象。在 SQL 生成期间,访问的每个对象Context都可以检查状态。该类State允许 Peewee 执行以下操作:

对字段类型或 SQL 表达式使用通用接口,但使用供应商特定的数据类型或运算符。
根据. Column_scope
确保正确使用括号。
参数:
scope ( int ) – 状态处于活动状态时要应用的范围规则。
括号( bool ) – 将包含的 SQL 包装在括号中。
subquery ( bool ) – 当前状态是否是外部查询的子查询。
kwargs ( dict ) – 应在当前状态下应用的任意设置。

11.6.3 class Context

class Context(**settings)

将 Peewee 结构转换为参数化的 SQL 查询。

Peewee 结构都应该实现一个__sql__方法,该方法将在 SQL 生成期间由Context类调用。__sql__方法接受一个参数,即Context实例,它允许递归下降以及范围和状态的自省。

scope

返回当前活动的范围规则。

parentheses

返回当前状态是否包含在括号中。

subquery

返回当前状态是否是另一个查询的子状态。

scope_normal([**kwargs])

默认范围。source由别名引用,列由source的虚线路径引用。

scope_source([**kwargs])

定义源时使用的范围,例如在 SELECT 查询的列列表和 FROM 子句中。此范围用于定义源的完全限定名称并分配别名。

scope_values([**kwargs])

用于 UPDATE、INSERT 或 DELETE 查询的范围,我们不是通过别名引用源,而是直接引用它。同样,由于只有一个表,因此不需要通过点路径引用列。

scope_cte([**kwargs])

生成公共表表达式的内容时使用的范围。在生成 CTE 的定义时(而不是仅仅引用一个),在 WITH 语句之后使用。

scope_column([**kwargs])

为列生成 SQL 时使用的范围。确保使用正确的别名呈现列。之所以需要,是因为在引用子选择的内部投影时,Peewee 会将完整的 SELECT 查询呈现为列的“源”(而不是查询的别名 + . + 列)。当我们只需要别名时,这个范围允许我们避免呈现完整的查询。

sql(obj)

将可组合的 Node 对象、子上下文或其他对象附加到查询 AST。Python 值,例如整数、字符串、浮点数等,被视为参数化值。

返回: 更新的 Context 对象。

literal(keyword)

将字符串文字附加到当前查询 AST。

返回: 更新的 Context 对象。

parse(node)

参数: 节点( Node ) – Node 子类的实例。
返回: 由(sql,参数)组成的 2 元组。
将给定节点转换为 SQL AST 并返回由 SQL 查询和参数组成的 2 元组。

query()

返回: 由上下文的 (sql, parameters) 组成的 2 元组。

11.7 常量和助手

11.7.1 class Proxy

class Proxy

为另一个对象创建代理或占位符。

initialize(obj)

参数: 对象– 要代理的对象。
将代理绑定到给定对象。之后,代理上的所有属性查找和方法调用都将发送到给定对象。

任何已注册的回调都将被调用。

attach_callback(callback)

参数: 打回来– 接受单个参数的函数,即绑定对象。
返回: self
添加在代理初始化时要执行的回调。

class DatabaseProxy

适合用作 Database实例占位符的代理子类。

有关使用的详细信息,请参阅动态定义数据库。

chunked(iterable,n )

参数:
iterable – 一个可迭代对象,它是要分块的数据的source。
n ( int ) – 块大小
返回:
一个新的迭代,它产生n长度的源数据块。

将大型数据列表分解为较小块的有效实现。

用法:

it = range(10)  # An iterable that yields 0...9.

# Break the iterable into chunks of length 4.
for chunk in chunked(it, 4):
    print(', '.join(str(num) for num in chunk))

# PRINTS:
# 0, 1, 2, 3
# 4, 5, 6, 7
# 8, 9

你可能感兴趣的:(数据库,python)