0

我在使用 psycopg2 将数据插入到 postgresql 表中时遇到问题。

该脚本执行以下操作:

  1. 从 postgres 数据库中查询数据
  2. 使用 numpy 做一些数学运算
  3. 然后我想将日期重新插入数据库中的另一个表。下面是插入数据的代码:

    cur.executemany("INSERT INTO water_level_elev (hole_name,measure_date,water_level_elev,rid) VALUES (%s,%s,%s,%s);",[(hole.tolist(),m_date.tolist(),wl.tolist(),rid.tolist(),)])
    

该脚本引发以下错误:

psycopg2.ProgrammingError: column "measure_date" is of type timestamp without time zone but expression is of type timestamp without time zone[]

LINE 1: INSERT INTO water_level_elev (hole_name,measure_date,water_l...
                                            ^
HINT:  You will need to rewrite or cast the expression.

我很困惑...“measure_date”列和我要插入的数据属于同一类型。什么问题????

谢谢!

4

1 回答 1

1

tolist()在没有on的情况下试一试m_date

如果不查看表的表架构water_level_elev或方法的来源,就不可能完全回答这个问题tolist。但是,听起来 PostgreSQL 期望的measure_date值是时间戳,但正在获取时间戳列表。这就是为什么 PostgreSQL[]在错误消息的第二个类型的末尾。这似乎是因为您粘贴的代码调用了一个以变量tolist中的任何内容命名的方法m_date,该方法很可能将单个时间戳转换为时间戳列表,其中包含m_date.

于 2012-11-04T19:41:59.447 回答