软件测试|SQLAlchemy query() 方法查询数据

简介

上一篇文章我们介绍了SQLAlchemy 的安装和基础使用,本文我们来详细介绍一下如何使用SQLAlchemy的query()方法来高效的查询我们的数据。

创建模型

我们可以先创建一个可供我们查询的模型,也可以复用上一篇文章中我们创建的模型,代码如下:

from sqlalchemy import Column, String, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine

Base = declarative_base()
engine = create_engine("mysql+pymysql://root:root@localhost:3306/apptest", echo=True)


class Player(Base):
    __tablename__ = "player"
    id = Column(Integer, primary_key=True)
    name = Column(String(20), default=None, nullable=False, comment="姓名")
    club = Column(String(20), default=None, nullable=False, comment="俱乐部")
    country = Column(Integer, default=0, nullable=False, comment="国家")

    def __repr__(self):
        Name = self.player_name
        Club = self.club_name
        Country = self.country_name
        return f"Player: name: {Name}, club: {Club}, country: {Country}"


Base.metadata.create_all(engine)  # 通过此语句创建表

创建实例

NewPlayer = Player(name="Salah", club="Liverpool", country="Eygpt")

创建会话

在使用 SQLAlchemy 进行查询之前,我们需要先建立与数据库的连接。通常,我们需要配置一个数据库引擎并创建一个会话对象。代码如下:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://root:root@localhost:3306/apptest", echo=True)
Session = sessionmaker(bind=engine)
session = Session()

查询对象

query() 方法是 SQLAlchemy 中用于构建数据库查询的主要方式。我们可以通过传递模型类来创建查询对象,然后使用链式方法来构建查询条件和操作。

以下是一个示例,演示如何使用 query() 方法查询数据库中的数据:

query_result = session.query(Player).all()
for result in query_result:
    print(f"查询结果为: {result}")

# [out]查询结果为: Player: name: Salah, club: Liverpool, country: Eygpt

因为我们只写入了一个数据,所以全部查询出来的数据也是只有一条数据,当我们数据多起来之后,我们可以进行更为复杂的查询,添加更多条件。

返回第一个查询数据

first = session.query(Player).first()
print(first)

-----------
输出结果为:
[out]查询结果为: Player: name: Salah, club: Liverpool, country: Eygpt

高级查询

我们可以在SQLAlchemy中添加filter()条件实现高级查询,示例如下:

  • like操作符
query_result = session.query(Player).filter(Player.name.like("%sa%"))
  • and操作符
query_result = session.query.filter(and_(Player.name == 'Salah', Player.id > 1))

除了使用and操作符,我们也可以使用其他方式达到and操作符的效果,比如添加多个filter()或者单个filter()中使用多个表达式,示例如下:

# 单个filter()中设置多个表达式
query_result = session.query.filter(Player.name == 'Salah', Player.id > 1)

# 使用多个filter()
query_result = session.query.filter(Player.name == 'Salah').filter(Player.id > 1)
  • or操作符
query_result = session.query.filter(or_(Player.name == 'Salah', Player.id > 1))
  • in操作符
query_result = session.query.filter(Player.club.in_(["Liverpool", "Chelsea"]))
  • not in操作符,在in操作符的基础加上运算符’~’即可
query_result = session.query.filter(~Player.country.in_(["Eygpt", "China"]))

总结

本文主要介绍了SQLAlchemy query()方法的使用,介绍了基础查询以及高级查询的使用,通过构建查询对象并应用过滤条件、排序和聚合操作,我们可以轻松地从数据库中检索所需的数据。希望本文可以帮助到大家。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

x-cmd pkg | tokei - 代码行数统计工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 tokei 是一个使用 Rust 编写的显示有关代码统计信息的命令行工具,可以分门别类的统计目录内的代码行数。 tokei 具有良好的跨平台性,可以在 Linux、macOS、Windows 等多种平台上安装运行。 首…

[C#]winform部署官方yolov8-obb旋转框检测的onnx模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-obb(You Only Look Once version 8 with Oriented Bounding Boxes)是一种先进的对象检测算法,它在传统的Yolov3和Yolov4基础上进行了优化,加…

Python办公自动化 – 数据预处理和数据校验

Python办公自动化 – 数据预处理和数据校验 以下是往期的文章目录,需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – 对Ex…

1491. 去掉最低工资和最高工资后的工资平均值

1491. 去掉最低工资和最高工资后的工资平均值 class Solution {public double average(int[] salary) {Arrays.sort(salary);salary[0] 0;for(int i 1;i < salary.length - 1;i){salary[0] salary[i];}return salary[0] * 1.0 / (salary.length - 2);} }

【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片

目录 1 导入PIL模块&#xff08;pillow&#xff09; 1.1 PIL的全称&#xff1a;Python Imaging Library 1.2 导入PIL模块 1.2.1 可用的导入形式 1.2.2 常用的导入形式 1.2.3 PIL下面的常用子模块 2 PIL.Image的方法 (读入&#xff0c;生成和显示图片) 2.1 用 PIL.Image…

算法总结——单调栈

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 文章目录 一、单调栈的定义二、单调栈的应用&#xff1a;寻找左边第一个比它小的数寻找左边第一个比它小的数的下标寻找右边第一个小于它的数寻找右边第一个小于它的数的…

毫无基础的人如何入门 Python ?

一、写在前面 其实不止是 Python&#xff0c;任何学习都会遇到这么几个难点 迷茫&#xff0c;对于学习过程中&#xff0c;对新的、未知的概念欠缺了解&#xff1b;彷徨&#xff0c;没有目的性的学习&#xff0c;不知道学完之后可以怎么用&#xff1b;乏力&#xff0c;知道很重…

通过 CMake 制作库文件 静态库 和 动态库

hehedalinux:~/Linux/loveDBTeacher-v2$ tree . ├── CMakeLists.txt ├── include │ └── head.h ├── main.c └── src├── add.c├── div.c├── mult.c└── sub.c CMake Calc 项目 在这里有add.c,div.c,mult.c,sub.c,main.c,head.h 二、生成静态库 …

protobuf学习日记 | 初识protobuf

目录 前言 一、序列化与反序列化 二、protobuf是什么 三、protobuf的使用特点 四、快速上手 1、proto文件编写 2、编译proto文件 3、序列化与反序列化的使用 前言 这是小编新开的一个栏目&#xff0c;为了记录自己在学习ProtoBuf的历程&#xff0c;也希望能帮助大家&am…

༺༽༾ཊ—设计-七个-07-原则-模式—ཏ༿༼༻

第七原则&#xff1a;迪米特职责 类与类之间的耦合度尽可能低 换言之&#xff0c;我们可以理解成———只与直接朋友说话&#xff0c;不跟陌生人说话 直接朋友&#xff1a; 通过方法传参传进来的朋友&#xff0c; 类自己的字段&#xff0c; 构造函数进来的也是直接朋友&…

CrystalDiskInfo v9.2.2

软件介绍 CrystalDiskInfo免费专业硬盘检测工具&#xff0c;硬盘健康状态信息检测工具。支持检测机械硬盘及固态硬盘信息&#xff0c;采用S.M.A.R.T.技术检测分析读取磁盘的详细信息&#xff0c;包含硬盘温度&#xff0c;固件、序列号、驱动器接口等。CrystalDiskInfo是由日本…

前沿重器[40] | 高级RAG技术——博客阅读

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现

回声状态网络&#xff08;Echo State Networks,ESN&#xff09;详细讲解及Python代码实现 1 基本概念 回声状态网络是一种循环神经网络。ESN 训练方式与传统 RNN 不同。网络结构如下图&#xff1a; &#xff08;1&#xff09;储层&#xff08;Reservoir&#xff09;&#x…

zotero使用gpt

zotero使用gpt 下载 zotero下载&#xff1a;https://www.zotero.org/download/ 插件下载&#xff1a;https://github.com/MuiseDestiny/zotero-gpt?tabreadme-ov-file 插件安装 zotero中选择 工具->添加组件 选择右上角的齿轮&#xff0c;选择Install add-on from fil…

LabVIEW水泵性能测试系

项目背景&#xff1a; 水泵作为工业和日常生活中不可或缺的设备&#xff0c;其性能测试对于提高设计水平和改善性能至关重要。传统测试方法往往需要依赖经验和理论的结合&#xff0c;且测试效率和准确性有待提高。为了解决这些问题&#xff0c;设计了一套基于NI-LabVIEW平台的水…

TikTok电商加快闭环,独享IP为运营带来哪些好处?

近日有消息称TikTok电商在加快闭环&#xff0c;以后商家可能无法继续在TikTok上为其他电商平台或独立站引流了。如今“TikTok Shop Shopping Center”平台正在构建&#xff0c;将各种购物渠道整合为一体&#xff0c;这可能是一种趋势&#xff0c;意味着TikTok逐渐从社交应用转型…

movie-web, 开源的电影搜索网站

这个开源的电影网站 movie-web 看起来是一个很不错的项目。它提供了简洁易用的界面&#xff0c;并且能够保存播放进度和收藏电影。同时&#xff0c;它还支持中文输入和快速的搜索响应速度&#xff0c;这对于中文用户来说是非常方便的。 不过需要注意的是&#xff0c;虽然它可以…

C# Cad2016二次开发api(三)

直线 Line 属性中文数据类型作用Length长度double直线的长度Angle角度double直线的弧度&#xff0c;0~2πDelta增量Vector3d起点到终点的向量Normal法向向量Vector3d直线所在平面的法向单位向量Thickness厚度doubleEndPoint终点Point3d直线的终点StartPoint起点Point3d直线的起…

使用Python实现深度学习模型通常涉及以下几个步骤:

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

RabbitMQ脑裂处理

脑裂现象&#xff1a; Network partition detected Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data. Please read RabbitMQ documentation about network partitions and the possible solutions. 转载请在文…