异步的fastapi-pagination分页功能 遇到的问题和解决方法

在使用fastapi-pagination分页功能时遇到的问题,异步调用时,当有多个表联合查询时只返回了一个表的字段。

查看源码,在/fastapi_pagination/ext/async_sqlalchemy.py 中发现这句

return create_page(items.scalars().unique().all(), total, params)

因为scalars()默认只返回对象元组中的第1个对象,所以造成上述情况

解决办法:

将该句改为  return create_page(items.unique().all(), total, params)

但多表联合查询时,如果select中包含了对象时,该方法的返回会有对象的字典嵌套,需要写个函数/方法 解决嵌套

如select(User, Org).where(...).join(...), 返回为


  {
    User:{ 字段1: 值1, 字段2: 值2 },
    Org:{ 字段1: 值1, 字段2: 值2 }
  },
  {
    User:{ 字段1: 值1, 字段2: 值2 },
    Org:{ 字段1: 值1, 字段2: 值2 }
  }
]

如select(User, Org.org_name, Org.legal_person).where(...).join(...), 返回为


  {
    User:{ 字段1: 值1, 字段2: 值2 },
    Org.org_name: 值,
    Org.legal_person: 值
  },
  {
    User:{ 字段1: 值1, 字段2: 值2 },   
    Org.org_name: 值,
    Org.legal_person: 值
  }
]

花了不少时间来解决,希望本文能帮助使用fastapi-pagination的小伙伴们

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容