我正在尝试遍历ndarray以将其索引和值记录到PostgreSQL中。这是我的代码:
for idx, val in enumerate(data):
cur.execute("INSERT INTO public.spams(review_id, label, confidence_level, aoc, created_at) VALUES (%s, %s, %s, %s, %s)", (idx+1, spamlabel, 0, 0, dt.now()))
ndarray的大小为762k,插入这些值花费了8个小时以上。有没有更有效的方法可以做到这一点?
答案 0 :(得分:0)
使用psycopg2的execute_values
帮助方法,并提供常量以限制我们必须传输的数据,例如:
from psycopg2 import extras
extras.execute_values(
cur,
"INSERT INTO public.spams(review_id, label, confidence_level, aoc, created_at) VALUES %s",
enumerate(data),
template = "(%s + 1, %s, 0, 0, CURRENT_TIMESTAMP)")
您还可以尝试使用page_size
参数来进一步调整吞吐量。