Python Flask sqlalchemy で 重複データがあるリストをDBに追加(add)する方法

2021年6月20日

この記事では、Python Flask sqlalchemyでsqliteを使用する環境において
重複を含むリストデータをDBに一括で追加する方法を紹介しています。

def データ追加処理():
	for 追加データ in 重複有追加データリスト:
		# (1) 重複確認フラグセット
		重複フラグ = "重複なし"

		# (2) DBデータ取得
		DBデータリスト = DBテーブル名.query.().all()
		
		# (3) 重複キーチェック(KEY重複があれば、重複フラグをONにする)
		for DBデータ in DBデータリスト:
			if DBデータ.KEY == 追加データ.KEY:
				重複フラグ = "重複あり"

		# (4) 重複フラグがOFFの場合
		if 重複フラグ == "重複なし":
			# 新規追加データを編集
			DBテーブル名.KEY = 追加データ.KEY
			DBテーブル名.DATA1 = 追加データ.DATA1
			DBテーブル名.DATA2 = 追加データ.DATA2

			# 新規追加データの内容をDBへ更新
			db.session.add(DBテーブル名)
			db.session.commit()
(1) 重複フラグを用意

追加データに重複があった場合、編集追加処理を行わないようにするため
条件分岐の条件として「重複フラグ」を用意します。その際、初期値として「重複なし」を設定します。

(2) 既存のDBの中身を全て抽出 (重複すると困るものだけ抽出でも可)

重複するデータが存在するか調べる処理に使用するために、DBの中身を一度全て取得します。

(3) 追加データの重複確認

追加するデータのKeyと同じKeyがDBにあるかどうかを判定し
もし、同じKeyがあれば「重複フラグ」を「重複あり」にします。

(4) 追加可否判定

重複フラグが「重複なし」の場合のみ、追加データをDBに追加をします。

ほかの文献で、重複をスルーするような簡単な方法を見つけられなかったため
代替処理として、上記の方法で対応をしましたが、もしもっとシンプルな方法がありましたら
コメント欄で教えていただけるとうれしいです。

ここまで見ていただき、ありがとうございました。😀

Pythonをまとめて学びたい方は、まずは無料オンラインセミナーがおすすめ