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