Как обновить несколько записей с приращением некоторого поля (в моем случае 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 записей, но проблема возникает, когда у вас есть миллионы или миллиарды записей с этой проблемой.