実現したいこと
SQLAlchemyを使用して、UpdateとInsertを1トランザクションで行いたいです。
詳細:
入力画面上で、"ID"と"str"が入力出来る画面があります。
"ID"が登録あった場合、入力[ID]の"end"を現在時刻に更新、更新した"ID"と入力された"str"を登録(insert)したいです。
※もはや、何をどうしたらいいのかわからなくなりました。insertとupdateがよくわかっていないのかもしれません・・・すみません。
実現したいDB
(もともとのDB(con)の状態)
|id|str|start | end
|:--|:--:|--:|
|1|aaa|2019-08-22 23:27:13|9999-12-31 09:00:00
上記DBが、下記のように更新されるイメージ。(↓)
teime_endを現在日時に更新して、同じidで登録する。(strが入力画面から受け取った内容)
|id|str|start | end
|:--|:--:|--:|
|1|aaa|2019-08-26 23:27:13|2019-08-28 23:27:13(現在日時に更新(now()))
|1|bbb|2019-08-26 23:27:13|9999-12-31 09:00:00(☆ここが追加(insert))
※プライマリーキーのことは、忘れてください。
現状
下に、途中コードを載せますがここから先どうしたらいいのかで止まっています。
現在"name 'm_data' is not defined"エラーで止まっている状態です。
(自身で解決できれば、すぐにコードを更新致します。申し訳ありません。)
作成中のコード
b.py
python
1class Con: 2 def put_main(self, id): 3 # Update 4 update = Con.query.filter(id == id).first() 5 update.end = datetime.datetime.now() 6 if update is None: 7 print('NotUpdate') 8 else: 9 # updateaあったらinsert 10 data = [] 11 # insert 12 insert = Con( 13 id = data['id'], 14 str = data['str'], 15 start= created_time, 16 end = datetime.date.max, 17 ) 18 m_set.append(insert) 19 contact = Contact(**data) 20 m_set.append(contact) 21 self.__commit(update, insert) 22 return m_set 23
現在以下のURL参考に進めています。
SQLAlchemyでUpdateするには
SQLAlchemyの基本的な使い方
SQLAlchemyで基本的なSQLクエリまとめ
など...
こんな感じでやれば出来るのではないかなどのアドバイスだけでも頂ければ幸いです。
updateとinsertしたいです・・・よろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。