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

この記事では、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に追加をします。
ほかの文献で、重複をスルーするような簡単な方法を見つけられなかったため
代替処理として、上記の方法で対応をしましたが、もしもっとシンプルな方法がありましたら
コメント欄で教えていただけるとうれしいです。
ここまで見ていただき、ありがとうございました。😀




















ディスカッション
コメント一覧
まだ、コメントがありません