【Python百日进阶-Web开发-Peewee】Day265 - Peewee API文档 - 查询生成器(一)

11.2 查询生成器

http://docs.peewee-orm.com/en/latest/peewee/api.html#query-builder

11.2.1 基类 class Node

class Node

构成 SQL 查询的 AST 的所有组件的基类。

static copy(method)

与改变节点状态的节点方法一起使用的装饰器。这允许方法链接,例如:

query = MyModel.select()
new_query = query.where(MyModel.field == 'value')

unwrap()

用于递归解包“包装”节点的 API。基本情况是返回自我。

is_alias()

用于确定节点在任何时候是否已被用户显式别名的 API。

11.2.2 class Source

class Source([alias=None])

行元组的来源,例如表、连接或选择查询。默认情况下,提供一个名为“c”的“魔术”属性,它是列/属性查找的工厂,例如:

User = Table('users')
query = (User
         .select(User.c.username)
         .where(User.c.active == True)
         .order_by(User.c.username))

alias(name)

返回应用了给定别名的对象的副本。

select(*columns)

参数: 列–Column实例、表达式、函数、子查询或您想要选择的任何其他内容。
在表上创建Select查询。如果表显式声明了列并且没有提供列,则默认情况下将选择表中所有定义的列。

join(dest[, join_type=‘INNER’[, on=None]])

参数:
dest ( Source ) – 加入具有给定目标的表。
join_type ( str ) – 连接类型。
on – 用作连接谓词的表达式。
回报:
一个Join实例。

连接类型可以是以下之一:

  • JOIN.INNER
  • JOIN.LEFT_OUTER
  • JOIN.RIGHT_OUTER
  • JOIN.FULL
  • JOIN.FULL_OUTER
  • JOIN.CROSS

left_outer_join(dest[, on=None])

参数:
dest ( Source ) – 加入具有给定目标的表。
on – 用作连接谓词的表达式。
回报:
一个Join实例。

join()使用 LEFT OUTER 连接调用的便捷方法。

11.2.3 class BaseTable

class BaseTable

类表对象的基类,通过运算符重载支持 JOIN。

and(dest)

在 上执行 INNER 连接dest。

add(dest)

在 上执行 LEFT OUTER 连接dest。

sub(dest)

在 上执行右外连接dest。

or(dest)

在 上执行 FULL OUTER 连接dest。

mul(dest)

在 上执行交叉连接dest。

11.2.4 class Table

class Table(name[, columns=None[, primary_key=None[, schema=None[, alias=None]]]])

表示数据库中的一个表(或类似表的对象,如视图)。

参数:

  • name ( str ) – 数据库表名
  • columns ( tuple ) – 列名列表(可选)。
  • primary_key ( str ) – 主键列的名称。
  • schema ( str ) – 用于访问表的模式名称(如有必要)。
  • alias ( str ) – 用于 SQL 查询中的表的别名。

笔记
如果指定了列,那么神奇的“c”属性将被禁用。

当列没有明确定义时,表有一个特殊的属性“c”,它是一个提供动态访问表列的工厂。

例子:

User = Table('users')
query = (User
         .select(User.c.id, User.c.username)
         .order_by(User.c.username))

指定列时的等效示例:

User = Table('users', ('id', 'username'))
query = (User
         .select(User.id, User.username)
         .order_by(User.username))

bind([database=None])

参数: 数据库——Database对象。
将此表绑定到给定的数据库(或通过留空来取消绑定)。

当表绑定到数据库时,可以对其执行查询,而无需在查询的执行方法中指定数据库。

bind_ctx([database=None])

参数: 数据库——Database对象。
返回一个上下文管理器,它将在包装块的持续时间内将表绑定到给定的数据库。

select(*columns)

参数: 列–Column实例、表达式、函数、子查询或您想要选择的任何其他内容。
在表上创建Select查询。如果表显式声明了列并且没有提供列,则默认情况下将选择表中所有定义的列。

例子:

User = Table('users', ('id', 'username'))

# Because columns were defined on the Table, we will default to
# selecting both of the User table's columns.
# Evaluates to SELECT id, username FROM users
query = User.select()

Note = Table('notes')
query = (Note
         .select(Note.c.content, Note.c.timestamp, User.username)
         .join(User, on=(Note.c.user_id == User.id))
         .where(Note.c.is_published == True)
         .order_by(Note.c.timestamp.desc()))

# Using a function to select users and the number of notes they
# have authored.
query = (User
         .select(
            User.username,
            fn.COUNT(Note.c.id).alias('n_notes'))
         .join(
            Note,
            JOIN.LEFT_OUTER,
            on=(User.id == Note.c.user_id))
         .order_by(fn.COUNT(Note.c.id).desc()))

insert([insert=None[, columns=None[, **kwargs]]])

参数:
insert – 将列映射到值的字典、产生字典(即列表)的迭代或Select查询。
columns ( list ) – 当插入的数据不是字典时要插入的列列表。
kwargs – 列名到值的映射。
在表中创建Insert查询。

replace([insert=None[, columns=None[, **kwargs]]])

参数:
insert – 将列映射到值的字典、产生字典(即列表)的迭代或Select查询。
columns ( list ) – 当插入的数据不是字典时要插入的列列表。
kwargs – 列名到值的映射。
在要替换冲突解决方法的表中创建Insert查询。

update([update=None[, **kwargs]])

参数:
update – 将列映射到值的字典。
kwargs – 列名到值的映射。
为表创建Update查询。

delete()

为表创建Delete查询。

11.2.5 class Join

class Join(lhs, rhs[, join_type=JOIN.INNER[, on=None[, alias=None]]])

表示与类似表的对象之间的 JOIN。

参数:

  • lhs - 连接的左侧。
  • rhs - 连接的右侧。
  • join_type – 连接类型。例如 JOIN.INNER、JOIN.LEFT_OUTER 等。
  • on – 描述连接谓词的表达式。
  • alias ( str ) – 应用于连接数据的别名。

on(predicate)

参数: 谓词(表达式)——连接谓词。
指定用于此连接的谓词表达式。

11.2.6 class ValuesList

class ValuesList(values[, columns=None[, alias=None]])

表示可以像表格一样使用的值列表。

参数:
values – 包含要表示的行数据的列表列表。
columns ( list ) – 赋予每一行中的列的名称。
别名( str ) – 用于值列表的别名。
例子:

data = [(1, 'first'), (2, 'second')]
vl = ValuesList(data, columns=('idx', 'name'))

query = (vl
         .select(vl.c.idx, vl.c.name)
         .order_by(vl.c.idx))
# Yields:
# SELECT t1.idx, t1.name
# FROM (VALUES (1, 'first'), (2, 'second')) AS t1(idx, name)
# ORDER BY t1.idx

columns(*names)

参数: 名字– 应用于数据列的名称。
例子:

vl = ValuesList([(1, 'first'), (2, 'second')])
vl = vl.columns('idx', 'name').alias('v')

query = vl.select(vl.c.idx, vl.c.name)
# Yields:
# SELECT v.idx, v.name
# FROM (VALUES (1, 'first'), (2, 'second')) AS v(idx, name)

11.2.7 class CTE

class CTE(name, query[, recursive=False[, columns=None]])

表示一个公共表表达式。例如查询,请参阅公用表表达式。

参数:

  • name – CTE 的名称。
  • query——Select描述 CTE 的查询。
  • recursive ( bool ) – CTE 是否是递归的。
  • columns ( list ) – CTE 生成的列的显式列表(可选)。

select_from(*columns)

创建一个使用给定公用表表达式作为新查询源的 SELECT 查询。

参数: 列– 从 CTE 中选择一列或多列。
回报: Select利用公用表表达式的查询

union_all(other)

用于基本情况 CTE 以构造 CTE 的递归项。

参数: 其他– 递归术语,通常是Select查询。
回报: 具有CTE给定递归项的递归。

11.2.8 class ColumnBase

class ColumnBase

类列对象、属性或表达式的基类。

可以使用各种运算符和特殊方法来组合列状对象。

  • &: 逻辑与
  • |: 逻辑或
  • +: 添加
  • -: 减法
  • *: 乘法
  • /: 分配
  • ^: 异或
  • ==: 平等
  • !=: 不平等
  • : 比…更棒

  • <: 少于
  • =: 大于或等于

  • <=: 小于或等于
  • <<:IN
  • :(IS即)IS NULL

  • %:LIKE
  • **:ILIKE
  • bin_and(): 二进制与
  • bin_or(): 二进制或
  • in_():IN
  • not_in():NOT IN
  • regexp():REGEXP
  • is_null(True/False):或IS NULLIS NOT NULL
  • contains(s):LIKE %s%
  • startswith(s):LIKE s%
  • endswith(s):LIKE %s
  • between(low, high):BETWEEN low AND high
  • concat():||

alias(alias)

参数: 别名( str ) – 给定列状对象的别名。
回报: 一个Alias对象。
指示应赋予指定的类列对象的别名。

cast( as_type )

参数: as_type( str ) – 要转换为的类型名称。
回报: 一个Cast对象。
创建CAST表达式。

asc([collation=None[, nulls=None]])

参数:
collat​​ion ( str ) – 用于排序的排序规则名称。
nulls ( str ) – 对空值进行排序(FIRST 或 LAST)。
回报:
列的升序Ordering对象。

desc([collation=None[, nulls=None]])

参数:
collat​​ion ( str ) – 用于排序的排序规则名称。
nulls ( str ) – 对空值进行排序(FIRST 或 LAST)。
回报:
列的降序Ordering对象。

invert()

回报: 列的Negated包装器。

11.2.9 class Column(source, name)

class Column(source, name)

参数:

  • source ( Source ) – 列的来源。
  • name ( str ) – 列名。
    表上的列或子查询返回的列。

11.2.10 class Alias

class Alias(node, alias)

参数:
节点( Node ) – 一个类似列的对象。
alias ( str ) – 分配给列的别名。
为给定的类列对象创建一个命名别名。

alias([别名=无])

参数: 别名( str ) – 别名列的新名称(或无)。
Alias为别名列类对象创建一个新对象。如果新别名是None,则返回原始的类似列的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳涛@心馨电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值