我設計了一個帶有外鍵約束的大型DB,以防止插入損壞的數據,這違反了這些約束。我希望,當我用Python插入數據時,它會跳過外鍵約束失敗的每個條目,這樣只有「真實」數據被插入到數據庫中。有點像過濾器。但是,只要發生「損壞」條目,腳本就會停止。有什麼辦法可以迫使他繼續,只是跳過不需要的線?Python:MySQL批量插入,跳過外鍵約束失敗的條目
感謝您的幫助!
我設計了一個帶有外鍵約束的大型DB,以防止插入損壞的數據,這違反了這些約束。我希望,當我用Python插入數據時,它會跳過外鍵約束失敗的每個條目,這樣只有「真實」數據被插入到數據庫中。有點像過濾器。但是,只要發生「損壞」條目,腳本就會停止。有什麼辦法可以迫使他繼續,只是跳過不需要的線?Python:MySQL批量插入,跳過外鍵約束失敗的條目
感謝您的幫助!
您可以使用INSERT INTO ... SELECT ...
進行條件插入。讓我們做一個例子:有兩個表國家和城市,並從city
引用列country_id
從國家相應列。
country(country_id,name)
city(city_id,name,country_id)
以下INSERT
語句將進入無條件。如果國家/地區中不存在任何行,則其失敗,值爲:country_id
。
INSERT INTO city (city_id, name, country_id)
VALUES (:city_id, :name, :country_id);
下面的語句只是插入的條目,如果國相應的行存在。否則,沒有任何反應。
INSERT INTO city (city_id, name, country_id)
SELECT :city_id, :name, :country_id
FROM country
WHERE country_id=:country_id;