You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为PostgreSQL传入WHERE查询条件?

Python操作PostgreSQL传入WHERE子句条件的正确写法

你的代码存在两个关键问题:

  1. SQL注入风险:直接拼接字符串会让恶意用户通过构造特殊值篡改查询逻辑,窃取或破坏数据库数据
  2. 语法错误隐患:如果a是字符串类型,拼接后的SQL语句会缺少引号,直接触发语法报错

正确实现:使用参数化查询

PostgreSQL的Python驱动(如psycopg2)支持参数化查询,自动处理字符串转义和注入问题,常用两种写法:

方式1:位置占位符%s

cur.execute("SELECT * from home_curd where consumer_type = %s", (a,))

注意第二个参数是元组,即使只有一个参数也要加逗号,避免被当作单个值解析。

方式2:命名参数

当查询条件较多时,命名参数更易读:

cur.execute("SELECT * from home_curd where consumer_type = %(consumer_type)s", {"consumer_type": a})

额外提醒

  • 不要手动给参数加引号,驱动会根据数据类型自动处理格式
  • 参数化查询还能提升重复执行相同结构查询的性能,数据库可缓存查询计划

内容的提问来源于stack exchange,提问作者coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:27:16