Tôi đã xây dựng một chương trình chèn nhiều dòng vào một máy chủ được đặt ở một thành phố khác.
Tôi phát hiện ra rằng sử dụng phương pháp này nhanh hơn khoảng 10 lần so với executemany
. Trong trường hợp của tôi tup
là một bộ chứa khoảng 2000 hàng. Mất khoảng 10 giây khi sử dụng phương pháp này:
args_str = ','.join(cur.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in tup)
cur.execute("INSERT INTO table VALUES " + args_str)
và 2 phút khi sử dụng phương pháp này:
cur.executemany("INSERT INTO table VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)", tup)