sqlalchemy查询json

第一种:字段op是json格式:

复制代码
{
        "uid": "cxb123456789",
        "role": 2,
        "op_start_time": 1743513707504,
        "op_end_time": 1743513707504,
        "op_start_id": "op_001",
        "op_end_id": "op_002",
        "op": {
          "ability_node": [{"id": "2c6adc22-e05a-4fe9-835f-ba5d7f8b303", "name": "连接数限制"}],
          "skill_node": [{"id": "cvlp6o324te32pj24teg", "name": "yyyy"}],
          "knowledge_node": [{"id": "cvlp6o324te32pj24teg", "name": "端到端加密"}],
          "op_id": "9131c441-4304-4101-b064-362352d26789",
          "op_name": "Initial Data Import",
          "pre_op": "",
          "next_op": "op_002",
          "dep_relationship": "",
          "op_result": 1,
          "op_score": 95.5,
          "op_count": 1
        }
      }

要求:查询op的json字段里面的op_id为传入的op_id

复制代码
from sqlalchemy.future import select

db_query = select(KnowledgeAiReport)
op_id = report.op.op_id
db_query = db_query.filter(KnowledgeAiReport.uid == report.uid).filter(KnowledgeAiReport.op.op('->>')('op_id') == op_id)
item = await db_session.execute(db_query)
report_db = item.scalars().first()

第二种:person_type也是json字段,

要求:存储的值是 "1","2",要求传入 "1"能查出对应的数据

实现代码:

复制代码
from sqlalchemy.dialects.postgresql import JSONB  # 使用JSONB,因为它支持全文搜索
from sqlalchemy import cast
from sqlalchemy.future import select


db_query = select(TbResident)
db_query = db_query.filter(cast(TbResident.illness_type, JSONB).op('@>')([f'{illness_type}']))
db_query = db_query.offset(page_no * page_size).limit(page_size).order_by(TbResident.created_at.desc())
    item = await db_session.execute(db_query)
    residents = item.scalars().all()
相关推荐
w_zero_one2 分钟前
链表(4)
java·数据结构·算法
默_笙4 分钟前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
见叶之秋33 分钟前
C++ 泛型世界的两块拼图:容器适配器与仿函数
java·开发语言
程序员老赵1 小时前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端
MayBaymax1 小时前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
星禾元亨1 小时前
同一件事有三份资料,AI 该信哪一份?冲突判定、优先级链与处置流程
前端·人工智能
Dovis(誓平步青云)1 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
穆梓兰煊1 小时前
TS5.7 vs 裸JS:AI应用少3坑
前端
榆瓷1 小时前
闲着没事,我把 WebGPU 的样板代码封成了一个库
前端
136096757231 小时前
页面打不开不是 Nginx 的错
前端·后端