亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 SqlAlchemy 增加多行

如何使用 SqlAlchemy 增加多行

神不在的星期二 2023-04-25 17:05:15
如何通過遞增某些字段來更新多個記錄(在我的例子中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 條記錄時,這并不復雜,但當你有數百萬或數十億條記錄時,問題就會出現。
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

為了能夠在序列中插入文檔,

我手動創建了new_id列并將其添加到Table模型中


new_object_id = 4


session.query(Table) \

? ? .filter(Table.id < new_object_id)\

? ? .update({Table.new_id: Table.id})


session.query(Table) \

? ? .filter(Table.id >= new_object_id)\

? ? .update({Table.new_id: Table.id + 1})

在這些操作之后,您應該能夠看到 id 序列中的一個“漏洞”。


然后,在單獨的查詢中,手動重命名列id->old_id和new_id-> id。使用所有屬性(主鍵、唯一性等)

更新了新“創建”的列。 刪除的列。id

old_id


最后,插入所需的行。


總時間 - 幾分鐘,而不是幾天。


找到適合我自己的解決方案。

查看完整回答
反對 回復 2023-04-25
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號