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

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时,你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用,比如 JSON_EXTRACT,并使用 group_bycount 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步骤。

首先,确保你已经安装了 SQLAlchemy。如果还没有安装,可以通过 pip 安装:

pip install SQLAlchemy 

然后,你可以按照以下步骤在你的代码中实现查询和统计:

  1. 连接到数据库:首先,创建一个数据库引擎来管理连接。

  2. 定义模型:定义一个模型来映射到数据库中的表。

  3. 查询和统计:使用 SQLAlchemy 的查询接口和函数来提取 JSON 字段的值,并按这个值进行分组统计。

假设我们有一个名为 users 的表,其中有一个名为 attributes 的 JSON 类型字段,我们想要按照 attributes 字段中 status 的值进行分组统计。

from sqlalchemy import create_engine, Column, Integer, String, JSON, func
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 定义基类
Base = declarative_base()# 定义模型
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)attributes = Column(JSON)# 创建数据库连接(替换为你的数据库连接字符串)
engine = create_engine('mysql+pymysql://user:password@localhost/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()# 执行查询和统计
results = session.query(func.json_unquote(func.json_extract(User.attributes, '$.status')).label('status'),func.count().label('count')
).group_by('status').all()# 打印结果
for status, count in results:print(f'Status: {status}, Count: {count}')
在这个示例中:
  • 我们使用 json_extract 函数来提取 attributes JSON 字段中的 status 值,并使用 json_unquote 来去除结果字符串的引号。
  • 使用 func.count() 来统计每个状态值出现的次数,并通过 group_by 方法按照状态值进行分组。
  • all() 方法用于执行查询,并获取所有结果。
http://www.lryc.cn/news/330221.html

相关文章:

  • HTTPS ECDHE 握手解析(计算机网络)
  • 在git上先新建仓库-把本地文件提交远程
  • Redis 过期删除策略
  • MySQL 锁合集与事务隔离级别
  • 题解 -- 第六届蓝桥杯大赛软件赛决赛C/C++ 大学 C 组
  • Lua脚本的使用
  • hcia datacom课程学习(5):MAC地址与arp协议
  • unbuntu mysql8.0新建用户及开启远程连接
  • Intel FPGA (1):线性序列机
  • 翻译: 硅谷软件工程师面试:准备所需的一切
  • 视频推拉流EasyDSS点播平台云端录像播放异常的问题排查与解决
  • kubuntu23.10安装sdl2及附加库和 sfml2.5.1
  • Centos JDK1.8 下载安装
  • iOS开发进阶(十四):xcodebuild 命令应用详解
  • uniapp 开发之原生Android插件
  • 构建第一个JS应用(FA模型)
  • 物联网学习2、MQTT 发布/订阅模式介绍
  • docker--部署 (超详版) (五)
  • 谷粒商城——通过接口幂等性防止重复提交订单
  • 谈谈MVCC机制
  • Linux之用户账号、用户组和与账号有关的系统文件
  • mac 安装 pip,如果你的电脑已经有 python3
  • java 枚举
  • Java学习之类和对象、内存底层
  • 递归遍历目录结构和树状展现
  • 【C++的奇迹之旅(二)】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例
  • 如何通过针对iOS的动态分析技术绕过反调试机制
  • 33.Python从入门到精通—Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别
  • 便携式气象站是什么
  • AIGC重塑金融:AI大模型驱动的金融变革与实践