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

psycopg2插入timestamp报not all arguments converted错误如何解决

问题原因
  • SQL语句语法错误:你的INSERT语句存在两处格式问题:一是列名和实际表结构不匹配,你表中存储文本的字段为text_data、时间字段为time_stamp,原语句写的列名text不存在,也未声明时间字段;二是VALUES子句格式错误,多写了无效的(dt,)片段,且第一个占位符括号末尾多了冗余逗号,最终仅声明了2个占位符。
  • 参数数量不匹配:你传入执行方法的参数有3个(text、id、dt),但原SQL只有2个占位符,多余的参数无法匹配,因此触发字符串格式化错误。
修正后的代码
try:
    # 列名与表结构对齐,3个占位符对应3个传入参数
    postgres_insert_query = """INSERT INTO tweets (text_data, userid, time_stamp) VALUES (%s, %s, %s)"""
    insertion_data = (text, id, dt)
    cursor.execute(postgres_insert_query, insertion_data)
    connection.commit()

except (Exception, psycopg2.Error) as error:
    print("failed", error)

finally:
    if connection:
        cursor.close()
        connection.close()
        print("closed")
注意事项
  • psycopg2原生适配Python的datetime类型,只要你的dt变量是带时区信息的datetime对象,就可以直接传入匹配timestamp with timezone类型的字段,不需要额外做字符串格式化。
  • 如果dt是字符串格式的时间值,建议先转换为带时区的datetime对象再传参,避免出现时区偏移异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:18:00