使用SQLAlchemy查询数据
2022/8/9 2:22:49
本文主要是介绍使用SQLAlchemy查询数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
释解:
# *maps为序列解包
# add_entity多表关系查询使用,在结果集增加关联表的实体类数据,如果后续不使用关联表的数据,则可不进行定义
# getattr获取对象属性值信息,适合**kwargs为不定长参数时去获取实体类的对象,以及属性值同传入的参数进行校验 # filter多参数时建议使用and,格式:filter(and_(*maps, user.delete == "N")) # func.count,使用数据统计类时,用法为func.sum,func.count,记得尾部带上scalar()
def queryUserRecord(pagNo, pageSize, **kwargs): maps = [] pagNo = pageSize * (pagNo - 1) user= User merchant = Merchant for i in kwargs.keys(): if kwargs[i]: # getattr获取对象属性值信息,getattr(对象,获取i的属性值) == 属性值 maps.append(getattr(user, i) == kwargs[i]) try: item_filter = session.query(user).join(merchant,user.application_name==merchant.app_name).\ add_entity(merchant).order_by(user.create_time.desc()).\ filter(and_(*maps, user.delete == "N")).offset(pagNo).limit(pageSize).all() totalRows = session.query(func.count(user.id)).filter(and_(*maps, user.delete == "N")).scalar() except Exception as e: session.close() finally: session.close() test_item = [] for i in item_filter: user= to_json(i[0]) merchant= to_json(i[1]) user["deploy_link"] = merchant["deploy_link"] test_item.append(user) dict_res = {"totalRows": totalRows, "list": test_item} session.close() print("maps",maps) return dict_res if __name__ == '__main__': print(queryUserRecord(1,100,serviceGroup=45))
这篇关于使用SQLAlchemy查询数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升