sql >> データベース >  >> RDS >> PostgreSQL

psycopgを使用した挿入の問題

    INSERT ステートメントの構文が無効です。あなたが言及したforループの中に何か問題があります。
    質問にforループを含める必要があります。

    INSERT INTO "DUMMY1km"(data)VALUES([[-3000 -3000 -3000 .....

    有効なステートメントは次のようになります-列のタイプがinteger[]であると仮定します 。
    ...これも質問に含める必要があります。

    INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])
    

    または

    INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000])  -- note the "ARRAY"
    

    または2次元配列の場合(エラーメッセージのように見えます):

    INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])
    

    または

    INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])
    

    マニュアルでの配列値の入力の詳細。

    エルゴ:

    matData[i]にはARRAY[-3000, -3000]が含まれている必要があります または、[[-3000 -3000 -3000 ...の代わりに有効な構文の他のリストされたバリアントの1つ これは整数配列には無効です。

    Psychopgは自動的にPostgreSQL配列を変換します Pythonリストに 。 INSERTを作成するときは、リストを配列に戻す必要があります。ここから引用します:

    Python lists are converted into PostgreSQL ARRAYs:
    
    >>> cur.mogrify("SELECT %s;", ([10, 20, 30], ))
    'SELECT ARRAY[10, 20, 30];'
    

    免責事項:私はPostgreSQLの専門家であり、Pythonの専門家ではありません。私よりもPythonをよく知っている人にとっては、それに応じて文字列をフォーマットするのは簡単なはずです。上記の引用は、ウェブ上の簡単な調査で見つかりました。




    1. PostgreSQLでピボットテーブルを作成する方法

    2. MySQL複数の行を返すSELECTサブクエリを使用してテーブルにINSERTを実行するにはどうすればよいですか?

    3. PLSQLプロシージャを使用してOracleのCSVファイルにデータをエクスポートする方法

    4. SQLite Length()のしくみ