批量更新使用 psycopg2 在 table 中更新超过 200000 行

Batch updating Updating over 200000 rows in a table using psycopg2

您好,我正在尝试更新超过 200000 行(准确:273649)。

我写了下面的代码来更新:

with open('gene.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
            sql = "UPDATE sequence_group_annotation SET STATUS = '" + row['status'] + "', UPDATED_DATE=CURRENT_DATE where seq_id_pk='" + row['ensembl_gene_id'] + "'"
            print sql
            cur.execute(sql);

在 print sql 语句中,我正在重定向我的文件:

update.py > results.txt

理想情况下,这应该更新 table,但它并没有这样做。

为了检查,我做了以下操作:

select seq_id_pk,status from sequence_group_annotation where status ISNULL and TYPE <> 3

并在我的 results.txt 文件

中寻找相应的 seq_id_pk

我复制了 sql 语句并 运行 它。之后我就能够成功更新它了。

知道为什么这不起作用吗?

您忘记commit()您的更改。 psycopg 在第一个 execute() 开始为您进行隐式交易,您需要在最后的 connection 对象上 commit()rollback()