当前位置: 首页 > news >正文

python flask中使用or查询和and查询,还有同时使用or、and的情况

在 Flask 中处理数据库查询时,通常会结合使用 ORM 工具,例如 SQLAlchemy。以下是 or 查询、and 查询以及两者同时使用的示例。

文章目录

  • 基础准备
  • 1. 使用 or_ 查询
  • 2. 使用 and_ 查询
  • 3. 同时使用 or_ 和 and_
  • 4. 更加复杂的嵌套查询

基础准备

假设有一个模型 User,定义如下:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import or_, and_db = SQLAlchemy()class User(db.Model):id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(50))email = db.Column(db.String(100))age = db.Column(db.Integer)

1. 使用 or_ 查询

or_ 用于构造多个条件之间的“或”关系。例如,查询名字为 “Alice” 或者年龄大于 25 的用户:

from sqlalchemy import or_users = User.query.filter(or_(User.name == 'Alice', User.age > 25)).all()

2. 使用 and_ 查询

and_ 用于构造多个条件之间的“与”关系。例如,查询名字为 “Alice” 且年龄大于 25 的用户:

from sqlalchemy import and_users = User.query.filter(and_(User.name == 'Alice', User.age > 25)).all()

注意:在 SQLAlchemy 中,如果是简单的“与”关系,直接用逗号分隔条件即可,不需要显式使用 and_:

users = User.query.filter(User.name == 'Alice', User.age > 25).all()

3. 同时使用 or_ 和 and_

假设查询的条件是:
● 名字为 “Alice” 或年龄大于 25,
● 并且邮箱以 “@example.com” 结尾。
可以这样组合:

from sqlalchemy import or_, and_users = User.query.filter(and_(or_(User.name == 'Alice', User.age > 25),User.email.like('%@example.com'))
).all()

4. 更加复杂的嵌套查询

例如,查询名字为 “Alice” 并且(年龄大于 25 或邮箱以 “@example.com” 结尾)的用户:

users = User.query.filter(User.name == 'Alice',or_(User.age > 25,User.email.like('%@example.com'))
).all()
http://www.lryc.cn/news/526694.html

相关文章:

  • 【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
  • 租房管理系统实现智能化租赁提升用户体验与运营效率
  • python3+TensorFlow 2.x(四)反向传播
  • Flutter 使用 flutter_inappwebview 加载 App 本地 HTML 文件
  • Word常见问题:嵌入图片无法显示完整
  • 为AI聊天工具添加一个知识系统 之68 详细设计 之9 三种中台和时间度量 之1
  • On to OpenGL and 3D computer graphics
  • 从曾国藩的经历看如何打破成长中的瓶颈
  • JavaWeb学习-SpringBotWeb开发入门(HTTP协议)
  • 数据库用户管理
  • BGP边界网关协议(Border Gateway Protocol)路由聚合详解
  • ASP.NET Core WebAPI的异步及返回值
  • 「 机器人 」仿生扑翼飞行器中的“被动旋转机制”概述
  • 「 机器人 」扑翼飞行器的数据驱动建模核心方法
  • 个人网站搭建
  • 飞书项目流程入门指导手册
  • xss靶场
  • XML实体注入漏洞攻与防
  • switch组件的功能与用法
  • cursor重构谷粒商城05——docker容器化技术快速入门【番外篇】
  • 高等数学学习笔记 ☞ 微分方程
  • 【探索 Kali Linux】渗透测试与网络安全的终极操作系统
  • 四方连续贴图是什么意思
  • RKNN_C++版本-YOLOV5
  • k8s优雅重启
  • 三高“高性能、高并发、高可靠”系统架构设计系列文章
  • opengrok_使用技巧
  • C++资料
  • 基于模糊PID的孵化箱温度控制系统(论文+源码)
  • 景联文科技加入AIIA联盟数据标注分委会