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

修复Python中带变量的PostgreSQL SELECT语句执行错误

问题原因

你用字符串格式化拼接SQL语句时,生成的查询里日期2023-12-07没有被引号包裹,PostgreSQL会把它当成整数减法运算(2023-12-07=1984),而你的date字段是character varying类型,整数和字符串无法直接比较,所以触发类型不匹配的错误。

修复方案

绝对不要用字符串格式化拼接SQL参数,改用参数化查询,pandas的read_sql_query支持通过params参数安全传递变量,它会自动处理类型转换和引号包裹:

date_pass='2023-12-07'

print("Opening import list.....")

con= psycopg2.connect(
    host="localhost",
    database="Zeitgeist_Storage",
    user="postgres",
    password="subsonic1")

# 保留占位符%s,不要手动拼接变量
sql = """select * from permanent_full_scrape_data where date = %s;"""

# 通过params参数传递变量,注意参数是元组形式(即使单个参数也要加逗号)
master_scrape_list_update_1 = pd.read_sql_query(sql, con, params=(date_pass,))
额外说明

参数化查询不仅能解决你遇到的类型匹配问题,还能有效避免SQL注入风险,是数据库操作的标准安全做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:27:08