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

SqlAlchemyでパンダを使用してアップサートを行う方法

    set_ パラメータは、列名をキーとして、式またはリテラルを値としてマッピングすることを想定しています。 、ただし、ネストされた辞書を値として持つマッピングを渡します。つまり、df.to_dict(orient='dict') 。 「タイプ'dict'を適応できません」というエラーは、SQLAlchemyがそれらの辞書を「リテラル」としてPsycopg2に渡した結果です。

    VALUES句を使用して1つのINSERTに複数の行を挿入しようとしているため、excluded SETアクションで。 EXCLUDEDは、挿入される予定の行を表す特別なテーブルです。

    insert_statement = postgresql.insert(my_table).values(df.to_dict(orient='records'))
    upsert_statement = insert_statement.on_conflict_do_update(
        index_elements=['id'],
        set_={c.key: c for c in insert_statement.excluded if c.key != 'id'})
    conn.execute(upsert_statement)
    



    1. PostgreSQLのファイルからXMLを挿入します

    2. node.js/MySQL:データベースに挿入しようとすると、一部の文字列エンコーディング(Emoji)がエラーをスローします

    3. ユーザー入力に基づいてLaravelで新しいテーブルを作成しますか?

    4. sqlalchemyで返すことで生のクエリを実行する方法