批量更新使用psycopg2更新表中的200000行

时间:2015-02-03 16:38:02

标签: sql postgresql 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

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

要检查,我所做的是以下内容:

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

并在我的results.txt文件中查找相应的seq_id_pk

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

有关为什么这不起作用的任何想法?

1 个答案:

答案 0 :(得分:2)

您忘记了commit()您的更改。 psycopg会在第一个execute()上为您开始一个隐式事务,并且您需要在commit()对象的rollback()connection结束。