セッションとは
セッションは、データベースへの変更の履歴(トランザクション)を管理するオブジェクトです。
セッションを使うことにより、コミット(更新反映)とロールバック(更新破棄)を実現できます。
トランザクションの開始(値の追加)と終了(値の保存)
session.add()でオブジェクトを追加すると、トランザクションが開始されます。
session.commit()でトランザクションが確定され、レコードが1件追加されます。
※データベースに値を追加したり削除したりセーブしたりするなど変更の履歴を管理するオブジェクト
INSERT
流れ
①オブジェクトを新規作成
②カラムを指定して値を追加
③session.add(オブジェクト)で値を一気に追加
④session.commit()で保存する
# ユーザーテーブルにレコードを追加
実例
user = User()
user.kana = "タナカイチロウ"
user.name = "田中一郎"
user.note = "備考"
session.add(user)
session.commit()
add_user = session.query(User).order_by(User.id.desc()).first()
一番最後に追加したものを取得している
print(add_user.kana, add_user.name, add_user.note)
そのほか
add_all関数で複数のデータを一度に登録する
複数のデータを1件ずつ登録するのはデータベースのパフォーマンス低下を引き起こします。
データの一括登録のために用意されたadd_all メソッドを使いましょう。
user_list = []
for v in range(10):
user = User()
user.kana = 'タナカイチロウ'
user.name = '田中一郎' + str(v)
user.note = '備考'
user_list.append(user)
session.add_all(user_list)
session.commit()
このプログラムでは10個のデータ(田中一郎0〜田中一郎9)をリストに格納して一度に登録しています。
UPDATE
流れ
①元データを選択
②更新したいカラムを選び値を指定
③セッションに追加
④セッションの保存
⑤更新を確認
実例
・元データ選択
user = session.query(User).filter(User.id == 5).first()
・ユーザーテーブルのレコードを更新
user.kana = "アップデート"
user.name = "テスト更新"
session.add(user)
session.commit()
・更新確認
user = session.query(User).filter(User.id == 5).first()
print(user.name, user.kana)
DELETE
流れ
①削除したいカラムをselectで呼び出し、最後に.delete()をつけて削除するだけ
・ユーザーテーブルのレコードを削除
session.query(User).filter(User.name == "山田 哲人").delete()
session.commit()
・削除確認
user = session.query(User).filter(User.name == '山田 哲人').first()
print(user)
SELECT文は以下のURL
トランザクションは以下のURL