Bạn có thể làm một số điều để đạt được điều đó.
Một cách là sử dụng một đối số bổ sung trong khi ghi vào sql.
df.to_sql(method = 'multi')
Theo tài liệu này , việc chuyển đối số 'multi' sang phương thức cho phép bạn chèn hàng loạt.
Một giải pháp khác là tạo một hàm chèn tùy chỉnh bằng multiprocessing.dummy. Đây là liên kết đến tài liệu: https://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.dummy
import math
from multiprocessing.dummy import Pool as ThreadPool
...
def insert_df(df, *args, **kwargs):
nworkers = 4 # number of workers that executes insert in parallel fashion
chunk = math.floor(df.shape[0] / nworkers) # number of chunks
chunks = [(chunk * i, (chunk * i) + chunk) for i in range(nworkers)]
chunks.append((chunk * nworkers, df.shape[0]))
pool = ThreadPool(nworkers)
def worker(chunk):
i, j = chunk
df.iloc[i:j, :].to_sql(*args, **kwargs)
pool.map(worker, chunks)
pool.close()
pool.join()
....
insert_df(df, "foo_bar", engine, if_exists='append')
Phương pháp thứ hai được đề xuất tại https://stackoverflow.com/a/42164138/5614132 .