PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zaktualizować kolumnę tabeli Postgres za pomocą ramki danych pandas?

Natknąłem się na podobny problem, a obecnie przyjęte rozwiązanie było dla mnie zbyt wolne. Mój stół miał ponad 500 000 wierszy i musiałem zaktualizować ponad 100 000 wierszy. Po długich badaniach i próbach i błędach doszedłem do skutecznego i poprawnego rozwiązania.

Pomysł polega na tym, aby użyć psycopg jako swojego pisarza i użyć tymczasowej tabeli. df to twoja ramka danych pandy, która zawiera wartości, które chcesz ustawić.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. składnia klucza obcego postgresql

  2. Funkcja lower() na znakach międzynarodowych w postgresql

  3. Powrót z funkcji z parametrem OUT

  4. Śledź zewnętrzną bazę danych z Heroku

  5. PostgreSQL — pisanie dynamicznego sql w procedurze składowanej, która zwraca zestaw wyników