您好我正在尝试更新超过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语句并运行它。之后我能够成功更新它。
有关为什么这不起作用的任何想法?
答案 0 :(得分:2)
您忘记了commit()
您的更改。 psycopg会在第一个execute()
上为您开始一个隐式事务,并且您需要在commit()
对象的rollback()
或connection
结束。