ฉันกำลังพยายามแทรกแถว (source_lat, source_long, Destination_lat, Destination_long) จาก Pandas dataframe ลงในตาราง PostgreSQL (gmaps) โดยใช้ psycopg2 INSERT ใน for loop ตารางมีข้อจำกัดด้านความสมบูรณ์ที่ป้องกันการแทรกแถวที่ซ้ำกัน (source_lat, source_long, Destination_lat, Destination_long) ดังนั้นฉันจึงจับรายการที่ซ้ำกันด้วยการลองยกเว้นบล็อก รหัสของฉันอยู่ด้านล่าง
ฉันกำลังวนซ้ำทุกแถวใน dataframe (ประมาณ 100,000 แถว) และเรียก cursor.execute(INSERT) ในแต่ละแถว ดูว่านั่นทำให้เกิดข้อผิดพลาดด้านความสมบูรณ์หรือไม่ หากไม่เป็นเช่นนั้น ฉันจะแทรกแถวนั้นในตาราง gmaps
อย่างไรก็ตาม โค้ดชิ้นนี้ใช้เวลาทำงานตลอดไป - ฉันจะเร่งความเร็วได้อย่างไร ฉันไม่แน่ใจว่าค่าโสหุ้ยอยู่ที่ไหน? ขอบคุณ!
Ele เป็นสิ่งทูเพิลที่เก็บ (source_lat, source_long, Destination_lat, Destination_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()