Masalahnya di sini adalah untuk setiap baris kueri penyisipan dibuat, lalu sebelum penyisipan baris berikutnya menunggu ACK.
Coba jalankan cuplikan ini sebelum import pandas as pd
from pandas.io.sql import SQLTable
def _execute_insert(self, conn, keys, data_iter):
print("Using monkey-patched _execute_insert")
data = [dict((k, v) for k, v in zip(keys, row)) for row in data_iter]
conn.execute(self.insert_statement().values(data))
SQLTable._execute_insert = _execute_insert
Ini adalah tambalan oleh nhockham pada to_sql insert yang menyisipkan baris demi baris. Inilah masalah github.
Jika Anda tidak dapat menggunakan pandas.to_sql, saya sarankan Anda mencoba menyisipkan massal sql-alchemy atau hanya menulis skrip untuk membuat kueri multibaris sendiri.
Sunting:Untuk memperjelas, kami memodifikasi metode _execute_insert dari Class SQLTable di pandas.io.sqlJadi ini harus ditambahkan dalam skrip sebelum mengimpor modul pandas.
Baris terakhir adalah perubahan.
conn.execute(self.insert_statement(), data)
telah diubah menjadi :
conn.execute(self.insert_statement().values(data))
Baris pertama akan menyisipkan baris demi baris sedangkan baris terakhir akan menyisipkan semua baris dalam satu pernyataan sql.
Pembaruan:Untuk versi panda yang lebih baru, kami memerlukan sedikit modifikasi dari kueri di atas.
from pandas.io.sql import SQLTable
def _execute_insert(self, conn, keys, data_iter):
print("Using monkey-patched _execute_insert")
data = [dict(zip(keys, row)) for row in data_iter]
conn.execute(self.table.insert().values(data))
SQLTable._execute_insert = _execute_insert