2015-03-31 99 views
0

我有一個具有管理儀表板的python應用程序。如何在每個按鈕點擊時更新所有行

那裏有一個叫做「更新數據庫」的按鈕。 (該應用使用MySQL和SQLAlchemy)

一旦它被點擊,它會進行API調用並獲取數據列表並將其寫入數據庫,並且如果API調用返回新記錄,則會添加它們並執行不重複當前存在的記錄。

但是,如果API調用返回較少的項目,它不會刪除它們。

因爲我甚至沒有「開始谷歌」的觀點,我需要一些關於我的應用程序應該做什麼類型的SQL查詢的指導。

像曾經按鈕被點擊,它需要經過所有行:

  • 做的修改,以更新的記錄已存在
  • 添加新的,如果有任何通過API調用
  • 返回
  • 刪除API調用未返回的那些。

這是什麼操作調用或如何可以在mysql中完成此操作?

一旦我瞭解了這一點,我將會看到如何在SQLAlchemy中做到這一點。

+0

你在找什麼叫做UPSERT或MERGE。 – 2015-03-31 11:24:41

+0

「所有行上的更新」 - 這通常是模式設計較差的標誌。更新的東西可以分開存儲嗎?最好在一個單元格中,不是很多行? – 2015-04-01 17:55:06

回答

0

您可能希望將時間戳列設置爲表格上的最新操作時間,並讓後臺線程將舊行作爲另一個操作移除。我不知道可能執行所需數據重組的任何原子動作。另一個選擇可能是令人滿意的是將替換批次寫入臨時表,重命名兩個版本(交換)並刪除舊錶。 HTH

相關問題