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

pandasデータフレームを使用してPostgresテーブルの列を更新するにはどうすればよいですか?

    同様の問題に遭遇し、現在受け入れられている解決策は私には遅すぎました。私のテーブルには500k以上の行があり、100k以上の行を更新する必要がありました。長い調査と試行錯誤の末、私は効率的で正しい解決策にたどり着きました。

    アイデアは、ライターとしてpsycopgを使用し、一時テーブルを使用することです。 df 設定したい値を含むパンダのデータフレームです。

    import psycopg2
    
    conn = psycopg2.connect("dbname='db' user='user' host='localhost' password='test'")
    cur = conn.cursor()
    
    rows = zip(df.id, df.z)
    cur.execute("""CREATE TEMP TABLE codelist(id INTEGER, z INTEGER) ON COMMIT DROP""")
    cur.executemany("""INSERT INTO codelist (id, z) VALUES(%s, %s)""", rows)
    
    cur.execute("""
        UPDATE table_name
        SET z = codelist.z
        FROM codelist
        WHERE codelist.id = vehicle.id;
        """)
    
    cur.rowcount
    conn.commit()
    cur.close()
    conn.close()
    


    1. SQL forループを使用して行をデータベースに挿入するにはどうすればよいですか?

    2. MySQLテーブルで2番目に高い値を取得します

    3. PHP MySQLPDOlastInsertIDは致命的なエラーを引き起こします

    4. 多対多を照会する方法は?