Skip to content

使用ormar查询数据库

查询集

每个模型都会自动注册到代表底层查询及其选项的查询集。

大多数方法还可以通过多对多关系以及通过 QuerysetProxy 接口实现反向外键关系。

!!!info 要查看支持哪些关系以及如何构建关系,请访问关系。

为简单起见,用于获取数据并将数据保存到数据库中的可用方法根据其所实现的功能分为几类。

请注意,某些函数/方法属于多个类别。

为了完整起见,列出了模型和关系方法。

要了解有关任何特定部分或功能的更多信息,请参阅详细信息子页面。

将数据插入数据库

  • 创建(**kwargs) -> 模型

  • get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]

  • update_or_create(**kwargs) -> Model

  • bulk_create(objects: List[Model]) -> None

  • 模型

    • Model.save()方法
    • Model.upsert()方法
    • Model.save_lated() 方法
    • 查询集代理

    • QuerysetProxy.create(**kwargs) 方法

    • QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) 方法
    • QuerysetProxy.update_or_create(**kwargs) 方法

!!!tip 要了解有关任何或所有这些函数的更多信息,请访问创建部分。

从数据库读取数据

  • get(**kwargs) -> 模型

  • get_or_none(**kwargs) -> Optional[Model]

  • get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]

  • 第一个() -> 模型

  • all(**kwargs) -> List[Optional[Model]]

  • 模型

    • Model.load()方法
    • 查询集代理

    • QuerysetProxy.get(**kwargs) 方法

    • QuerysetProxy.get_or_none(**kwargs) 方法
    • QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) 方法
    • QuerysetProxy.first() 方法
    • QuerysetProxy.all(**kwargs) 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问阅读部分。

从数据库读取原始数据

模型以字典或元组列表的形式返回原始数据,而不是 ormar。

  • values(fields = None, exclude_through = False) -> List[Dict]

  • values_list(fields = None, exclude_through = False, flatten = False) -> List

  • 查询集代理

    • QuerysetProxy.values(fields = None, exclude_through = False) 方法
    • QuerysetProxy.values_list(fields = None, exclude_through= False, flatten = False) 方法

!!!tip 要了解有关任何或所有这些函数的更多信息,请访问原始数据部分。

更新数据库中的数据

  • update(each: bool = False, **kwargs) -> int

  • update_or_create(**kwargs) -> Model

  • bulk_update(objects: List[Model], columns: List[str] = None) -> None

  • 模型

    • Model.update()方法
    • Model.upsert()方法
    • Model.save_lated() 方法
    • 查询集代理

    • QuerysetProxy.update_or_create(**kwargs) 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问更新部分。

从数据库中删除数据

  • delete(each: bool = False, **kwargs) -> int

  • 模型

    • Model.delete() 方法
    • 查询集代理

    • QuerysetProxy.remove() 方法

    • QuerysetProxy.clear() 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问删除部分。

连接和子查询

  • select_related(related: Union[List, str]) -> QuerySet

  • prefetch_related(related: Union[List, str]) -> QuerySet

  • 模型

    • Model.load()方法
    • 查询集代理

    • QuerysetProxy.select_related(related: Union[List, str]) 方法

    • QuerysetProxy.prefetch_related(related: Union[List, str]) 方法

!!!tip 要了解有关任何或所有这些函数的更多信息,请访问连接和子查询部分。

过滤和排序

  • 过滤器(**kwargs) -> 查询集

  • 排除(**kwargs) -> 查询集

  • order_by(columns:Union[List, str]) -> QuerySet

  • get(**kwargs) -> 模型

  • get_or_none(**kwargs) -> Optional[Model]

  • get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]

  • all(**kwargs) -> List[Optional[Model]]

  • 查询集代理

    • QuerysetProxy.filter(**kwargs) 方法
    • QuerysetProxy.exclude(**kwargs) 方法
    • QuerysetProxy.order_by(columns:Union[List, str]) 方法
    • QuerysetProxy.get(**kwargs) 方法
    • QuerysetProxy.get_or_none(**kwargs) 方法
    • QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) 方法
    • QuerysetProxy.all(**kwargs) 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问过滤和排序部分。

选择列

  • fields(columns: Union[List, str, set, dict]) -> QuerySet

  • exclude_fields(columns: Union[List, str, set, dict]) -> QuerySet

  • 查询集代理

    • QuerysetProxy.fields(columns: Union[List, str, set, dict]) 方法
    • QuerysetProxy.exclude_fields(columns: Union[List, str, set, dict]) 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问选择列部分。

分页和行数

  • paginate(page: int) -> QuerySet

  • limit(limit_count: int) -> QuerySet

  • offset(offset: int) -> QuerySet

  • get() -> 模型

  • 第一个() -> 模型

  • 查询集代理

    • QuerysetProxy.paginate(page: int) 方法
    • QuerysetProxy.limit(limit_count: int) 方法
    • QuerysetProxy.offset(offset: int) 方法

!!!tip 要了解有关任何或所有这些功能的更多信息,请访问分页部分。

聚合函数

  • count(distinct: bool = True) -> int

  • 存在() -> 布尔值

  • 查询集代理

    • QuerysetProxy.count(distinct=True) 方法
    • QuerysetProxy.exists() 方法

!!!tip 要了解有关任何或所有这些函数的更多信息,请访问聚合部分。