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

使用psycopg2查询含空格字符串时出现SQL语法错误的问题

解决psycopg2查询带空格字符串的语法错误

你的问题核心是SQL字符串语法错误,以及没有采用psycopg2推荐的参数化查询方式,以下是具体解决方案:

错误原因

原SQL语句中my product未用单引号包裹,SQL解析器会将my和product识别为两个独立标识符,导致解析中断。你尝试的引号写法要么在Python字符串中被转义失效,要么不符合psycopg2的处理逻辑。

正确解决方案:使用参数化查询(推荐)

psycopg2官方推荐用参数化查询处理动态值,既解决引号问题,又能避免SQL注入风险:

find_id = 'SELECT "serial_number" FROM "LogFiles" WHERE "LogFiles"."user_name" = %s;'
cur.execute(find_id, ('my product',))
result = cur.fetchall()
  • 用%s作为占位符,无需手动添加引号
  • 将查询参数放在元组中传给execute()的第二个参数,psycopg2会自动处理字符串转义和引号包裹

不推荐的直接拼接方式(仅作参考)

如果一定要直接拼接SQL字符串,需确保SQL中的字符串被单引号包裹,同时在Python字符串中正确处理引号:

# 方式1:用反斜杠转义单引号
find_id = 'SELECT "serial_number" FROM "LogFiles" WHERE "LogFiles"."user_name" = \'my product\';'
# 方式2:用双引号包裹Python字符串
find_id = "SELECT \"serial_number\" FROM \"LogFiles\" WHERE \"LogFiles\".\"user_name\" = 'my product';"

这种方式存在SQL注入风险,若查询值来自用户输入,绝对不要使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:15:31