【问题标题】:Not able to pass datetime object into postgresql using psycopg2无法使用 psycopg2 将日期时间对象传递到 postgresql
【发布时间】:2025-11-23 15:10:02
【问题描述】:

我需要将一些插入数据传递到也包含时间戳的 postgres 中。我正在使用 psycopg2。

在遇到与问题中提出的相同错误时,我尝试按照此处的答案进行操作:Passing a datetime into psycopg2

我的代码不起作用:

recv_data = {"datetime":datetime.datetime(2019, 12, 5, 12, 56, 34, 617607)
             "temperature": 40, "humidity":80}

insert_stmt = "INSERT INTO temp_humidity (temperature,humidity,datetime) VALUES (%s,%s,%s)"
data = (recv_data["temperature"], recv_data["humidity"], recv_data["datetime"])
print(insert_stmt)
cursor.execute(insert_stmt, data)
connection.commit()

错误:

错误:当前事务被中止,命令被忽略直到事务块结束

声明:插入 temp_humidity(温度、湿度、日期时间)值(42,79,'2019-12-05T05:55:45.135111'::timestamp)

任何解决方案将不胜感激。

【问题讨论】:

    标签: python postgresql datetime psycopg2


    【解决方案1】:

    时间戳好像没问题,

    SELECT '2019-12-05T05:55:45.135111'::timestamp;
             timestamp          
    ----------------------------
     2019-12-05 05:55:45.135111
    (1 row)
    

    问题似乎出在其他地方,可能在约束检查中? 你能从psycopg2异常或PostgreSQL日志中得到准确的错误信息吗?

    【讨论】:

    • 显然你已经关闭了你使用的任何 IDE(或命令行)的自动提交/回滚。 Postgres 正在等待提交或回滚。