class AliasManager
管理 SELECT 查询中分配给Source对象的别名,以避免在单个查询中使用多个源时出现模糊引用。
add(source)
在当前范围内将源添加到 AliasManager 的内部注册表。别名将使用以下方案自动生成(其中每个缩进级别引用一个新范围):
参数: source(source)——让经理知道新的source。如果已经添加了源,则调用是无操作的。
get(source[, any_depth=False])
返回当前范围内源的别名。如果源没有别名,它将被赋予下一个可用的别名。
参数: source( Source ) – 应检索其别名的源。
返回: 已分配给源的别名,或下一个可用的别名。
返回类型: 字符串
setitem(source, alias)
在当前范围内手动设置源的别名。
参数: source( Source ) – 我们为其设置别名的源。
push()
将新范围压入堆栈。
pop()
从堆栈中弹出范围。
class State(scope[, parentheses=False[, subquery=False[, **kwargs]]])
用于表示给定范围内状态的轻量级对象。在 SQL 生成期间,访问的每个对象Context都可以检查状态。该类State允许 Peewee 执行以下操作:
对字段类型或 SQL 表达式使用通用接口,但使用供应商特定的数据类型或运算符。
根据. Column_scope
确保正确使用括号。
参数:
scope ( int ) – 状态处于活动状态时要应用的范围规则。
括号( bool ) – 将包含的 SQL 包装在括号中。
subquery ( bool ) – 当前状态是否是外部查询的子查询。
kwargs ( dict ) – 应在当前状态下应用的任意设置。
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 元组。
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