sqlalchemy-orm联表查询指定字段

2023-11-09 16:44

本文主要是介绍sqlalchemy-orm联表查询指定字段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 联表查询全部字段
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker# 创建数据库连接
engine = create_engine('mysql://username:password@localhost/database_name')
Session = sessionmaker(bind=engine)
session = Session()# 联表查询
query = session.query(ANNInspectionBatchTaskModel, ANNDistributionBatchTaskModel).\filter(ANNInspectionBatchTaskModel.id == ANNDistributionBatchModel.task_id)# 获取查询结果
results = query.all()# 打印查询结果
for result in results:ann_inspection_task = result[0]ann_distribution_task = result[1]print(ann_inspection_task.id, ann_inspection_task.other_field1, ann_inspection_task.other_field2,ann_distribution_task.id, ann_distribution_task.task_id, ann_distribution_task.other_field3)

在上面的代码中,首先创建数据库连接并创建一个Session对象。然后使用session.query()方法指定要查询的两个模型类,并使用filter()方法指定关联条件。最后使用all()方法获取查询结果,并通过遍历结果获得每一行的数据。

2. 联表查询指定字段
# 联表查询,并指定需要的字段
query = session.query(BatchTaskModel.id,BatchTaskModel.other_field1,DistributionTaskModel.task_id,DistributionTaskModel.other_field3).(ANNInspectionBatchTaskModel.id == ANNDistributionBatchTaskModel.task_id)# 获取查询结果
results = query.all()# 打印查询结果
for result in results:ann_inspection_id = result[0]ann_inspection_other_field1 = result[1]ann_distribution_task_id = result[2]ann_distribution_other_field3 = result[3]print(ann_inspection_id,_inspection_other_field1, ann_distribution_task_id, ann_distribution_other_field3)

在上述代码中,session.query() 方法中指定了需要的字段,然后通过遍历查询,可以获取每一行中指定字段的值。

实际上,当你在 session.query() 方法中指定了需要的字段,SQLAlchemy 会自动根据模型类的定义和关联条件来生成适当的联表查询语句,无需显式指定表名称。

在上述代码中,我们直接使用了结果对象的属性来获取指定字段的值,而无需指定表名称。SQLAlchemy ORM根据模型类的定义自动识别和映射表结构,并生成适当的联表查询语句。

这篇关于sqlalchemy-orm联表查询指定字段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377342

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可