PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

कैसे एक पांडा डेटा फ्रेम का उपयोग कर एक 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker में PostgreSQL - होस्ट से कंटेनर तक पहुंच की अनुमति देने के लिए pg_hba.conf

  2. डंप फ़ाइल पर pg_restore का उपयोग करना

  3. पोस्टग्रेज के साथ तैयार बयानों का उपयोग कैसे करें

  4. पोस्टग्रेज के साथ सम्मिलित तालिका में केवल एक पंक्ति में कैसे शामिल हों?

  5. PostgreSQL के साथ तालिकाओं को मर्ज करने के लिए पूर्ण बाहरी शामिल हों