# 1. 待删除的多个参数(业务传入) oenum_list = ["OE123", "OE456"] start_time = "2025-01-01 00:00:00" # 新增参数1:时间阈值 status = 0 # 新增参数2:状态值 # 2. 多参数防注入写法(仅需加新的占位符+传参) if oenum_list: # 核心校验仍保留 # ① SQL中定义多个占位符::ids / :start_time / :status sql = db.text(""" DELETE a, b, c FROM tables a LEFT JOIN tables b ON a.itemid = b.listing_id LEFT JOIN tables c ON a.itemid = c.itemid WHERE a.keyword IN :ids AND a.create_time < :start_time -- 新增参数1:时间条件 AND b.status = :status -- 新增参数2:状态条件 """) # ② 执行时传入字典,key对应占位符,值支持任意类型(自动转义) db.session.execute( sql, { "ids": tuple(oenum_list), # 列表转元组(IN条件必需) "start_time": start_time, # 字符串参数(自动加引号) "status": status # 数字参数(无需手动处理) } ) db.session.commit() else: print("无待删除数据,跳过")python多表关联防注入sql
张小明
前端开发工程师
《AI应用架构师:在AI驱动数字转型的浪潮中破浪前行》
AI应用架构师:在AI驱动数字转型的浪潮中破浪前行 引言:为什么你的AI项目总是“翻车”? 凌晨三点,某零售企业的技术总监盯着电脑屏幕发呆——他们花了120万采购的AI推荐系统上线3个月,用户转化率没涨反降,…
android kotlinx.serialization用法和封装全解
替代Gson、fastJson等传统java的json解析工具。抛弃传统的反射类解析字段,利用kotlin的inlinereified特性和android可以预编译的特点,在编译阶段的时候,还原最后的类型,来实现的json序列化与反序列化。 性能效率:不做评…
【毕业设计】基于springboot的在线招标系统的设计与实现(源码+文档+远程调试,全bao定制等)
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
Python CGI 编程
Python CGI 编程 引言 CGI(Common Gateway Interface,通用网关接口)是一种网络服务器与执行程序之间进行通信的协议。Python作为一种功能强大、易学易用的编程语言,在CGI编程中得到了广泛应用。本文将详细介绍Python CGI编程的相关知识,包括Python CGI的基础概念、环境搭…
宏任务与微任务:前端面试必考执行顺序
宏任务 / 微任务执行顺序(经典面试题详解)你关注的宏任务、微任务执行顺序是前端面试的核心考点,尤其围绕 setTimeout、Promise.then、async/await 的执行逻辑,我会从概念定义、执行机制到经典例题,帮你彻底理清。一、…
【计算机毕业设计案例】基于Spring Boot的数字乡村治理系统“村事通”设计与实现基于springboot的村务管理系统的设计与实现(程序+文档+讲解+定制)
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…