You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pony ORM中实现类似SELECT *的全字段查询?

解决Pony ORM全字段转换为字典的问题

你可以利用Pony ORM内置的to_dict()方法自动生成包含所有字段的字典,无需手动逐个编写。同时优化查询逻辑让代码更简洁高效:

修改后的代码

from typing import Union
from pony.orm import db_session

@db_session
def get_client_info_by(self, **criteria) -> Union[dict, None]:
    """Return client's info from database by specified criteria"""
    if not criteria:
        return None

    # 简化过滤条件写法,直接用select传入关键字参数
    query = self.clients.select(**criteria)
    # 获取第一个匹配的客户实体,无匹配则返回None
    client = query.first()

    if client:
        # 自动转换所有字段为字典
        return client.to_dict()
    return None

关键优化说明

  • 自动生成字段字典:client.to_dict()会自动遍历实体的所有数据库字段生成键值对字典,彻底替代手动编写50+字段的冗余代码。如果需要排除部分字段,可使用client.to_dict(exclude=['field1', 'field2']);如果仅需特定字段,用include参数,比如client.to_dict(include=['id', 'first_name'])。
  • 简化查询过滤:Pony的select()方法支持直接传入关键字参数作为过滤条件,省去循环添加filter的步骤,代码更简洁。
  • 高效获取单个对象:用first()方法直接获取第一个匹配的实体,比切片query[:]再取索引更高效,返回结果要么是实体对象要么是None,判断逻辑更直观。

内容的提问来源于stack exchange,提问作者Tori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:42:38