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

Python操作PostgreSQL参数化插入查询出现语法错误求助

排查PostgreSQL参数化查询报错的原因

嘿,问题出在参数占位符的使用上!你用了?作为占位符,但psycopg2(Python连接PostgreSQL的驱动)并不支持这种写法,它的参数占位符是%s——这是和SQLite等其他数据库驱动的关键区别,也是导致你报错的核心原因。

修正后的代码

把execute语句里的?替换成%s就可以正常运行了,完整函数如下:

import psycopg2

def insert_data(time, price):
    con = psycopg2.connect(database="", user="", password="", host="", port="5432")
    print("Database opened successfully")
    cur = con.cursor()
    # 用%s作为参数占位符
    cur.execute("insert into paxos (date, price) values (%s, %s)", (time, price))
    con.commit()
    print("Record inserted successfully")
    con.close()

insert_data("2020-04-09 14:39:58.145804", "$1,664.08")

额外注意点

  • psycopg2会自动帮你处理参数的类型转换和引号包裹,所以不需要像非参数化查询那样给字符串加单引号,同时还能避免SQL注入风险。
  • 确保你的date字段类型和传入的time字符串格式匹配(比如timestamp类型),如果类型不匹配可能会出现新的报错,但这已经不是语法问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:52:42