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

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.kler.cn/a/516885.html

相关文章:

  • 2024 自主创业事业小结和2025展望
  • 探究 Facebook 隐私安全发展方向,未来走向何方?
  • LabVIEW智能胎压监测
  • MySQL(4)多表查询
  • QT:QTabWidget设置tabPosition为West时,文字向上
  • excel导入数据处理前端
  • Vue实现div滚动,并且支持top动态滚动
  • windows修改host上github
  • 考研408笔记之数据结构(五)——图
  • 第04章 02 VTK管道的执行过程与类型
  • 2.7 createCmd中的visitor访问者设计模式
  • 基于微信小程序的设备故障报修管理系统设计与实现(LW+源码+讲解)
  • stm8s单片机(四)时钟输出与蜂鸣器实验
  • 【飞牛云访问本地NAS数据】手机飞牛云APP异地远程连接fnOS随时随地访问私有应用不受网络限制
  • vim如何设置制表符表示的空格数量
  • DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)
  • mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看数据库,删除数据库,使用数据库;
  • VS C++ 配置OPENCV环境
  • AI语言模型竞争加剧:新秀崛起 格局生变
  • ES Module 标准规范
  • C++|开源日志库log4cpp和glog
  • 【云南省乡镇界】面图层shp格式arcgis数据乡镇名称和编码+wgs84坐标无偏移内容测评
  • 【javaSE】内部类(来自类和对象的补充)
  • vue(33) : 安装组件出错解决
  • 在 Ubuntu 上的 Docker 容器中安装 MySQL
  • 订单状态定时处理、来单提醒和客户催单(day10)