批量更新使用 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()
。
您好,我正在尝试更新超过 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()
。