【发布时间】:2020-11-24 05:16:12
【问题描述】:
如何通过增加某些字段来更新多条记录(在我的情况下为id)?
我错过了一条记录,整个表格都发生了变化。
如何在一笔交易或一次查询中做到这一点?或者最快的方法是什么?
尝试了类似下面的方法,但是太慢了。
rows = session.query(Table).all()
for row in rows:
row.id = row.id + 1
session.commit()
也尝试使用类似的东西,但它不适合我:
session.query(Table)\
.filter(Table.id == row.id)\
.update({'id': row.id + 1})
我拥有的数据示例:
ID Value
1 A
2 B
3 C
< -- D is missing here
4 E
5 F
这里,如果是字母表D 的 ID=4,那么我需要增加 E 和 F。
当你有 5 条记录时,这并不复杂,但当你有数百万或数十亿条记录时,就会出现这个问题。
【问题讨论】:
-
你所说的“整个表移位”是什么意思?您是否知道 PostgreSQL 序列号/身份在设计上可能存在漏洞?请提供minimal reproducible example,在这种情况下是模型,以及您尝试实现的前后的一些示例数据。
-
@IljaEverilä 实际上我需要按固定顺序创建那个洞。因为我错过了在导入过程中创建一个对象。但是对象应该一个接一个。
-
@IljaEverilä 添加示例。
标签: python python-3.x postgresql python-2.7 sqlalchemy