Saya mencoba memasukkan baris (source_lat, source_long, tujuan_lat, tujuan_long) dari kerangka data Pandas ke dalam tabel PostgreSQL (gmaps) menggunakan psycopg2 INSERT dalam loop for. Tabel memiliki batasan integritas yang mencegah baris duplikat (source_lat, source_long, tujuan_lat, tujuan_long) disisipkan, jadi saya menangkap duplikat apa pun dengan blok coba kecuali. Kode saya ada di bawah.
Saya mengulangi setiap baris dalam kerangka data (sekitar 100.000 baris) dan memanggil kursor.execute(INSERT) pada setiap baris, melihat apakah itu menimbulkan kesalahan integritas, jika tidak, saya memasukkan baris itu ke tabel gmaps.
Namun, potongan kode ini membutuhkan waktu lama untuk dijalankan - bagaimana cara mempercepatnya? Saya tidak yakin di mana letak biaya overhead? Terima kasih!
Ele adalah tupel yang menampung (source_lat, source_long, tujuan_lat, tujuan_long)
for ele in coordinates:
#Inserts new row to table
try:
cursor.execute('INSERT INTO gmaps (source_latitude, source_longitude, destination_latitude, destination_longitude) VALUES (%s, %s, %s, %s)', (ele[0], ele[1], ele[2], ele[3])))
except psycopg2.IntegrityError:
conn.rollback()
else:
conn.commit()