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 が[]エラー メッセージの 2 番目のタイプの末尾にある理由です。これは、貼り付けたコードがtolistm_date変数にあるもので名前が付けられたメソッドを呼び出しているためと思われます。これにより、単一のタイムスタンプがタイムスタンプのリストに変換され、m_date.

于 2012-11-04T19:41:59.447 に答える