python-3.x - 在遍历非常大的 ndarray 时,是否有更快的方法将记录插入 postgresql 数据库?

标签 python-3.x postgresql iteration numpy-ndarray

我正在尝试遍历 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 小时以上。有没有更有效的方法来做到这一点?

最佳答案

使用 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 参数进一步调整吞吐量。

关于python-3.x - 在遍历非常大的 ndarray 时,是否有更快的方法将记录插入 postgresql 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55323126/

相关文章:

SQL 查询按具有低于阈值的内部连续距离的列的最大集进行分组

ruby-on-rails - PG::UndefinedFunction: 错误:运算符不存在:文本 = bool 值

java - 迭代遍历树以查找大小

javascript - 在数组上迭代数组而不重复

python - 无法导入 pygal_maps_world.World

python - 最新 python 更新后读取长路径(>256 个字符)的文件时出现问题

python-3.x - 动态更新数据框的某些列

python - Python中对数计算的底数会影响速度吗?

sql - 请问这个案例如何查询?

javascript - 将字符串拆分为具有分页/ block 编号的字符限制 block