セッションとは
セッションは、データベースへの変更の履歴(トランザクション)を管理するオブジェクトです。
セッションを使うことにより、コミット(更新反映)とロールバック(更新破棄)を実現できます。

トランザクションの開始(値の追加)と終了(値の保存)
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