↓ メインコンテンツへスキップ

Flask-SQLAlchemy によるデータベース操作

概要
#

Flask-SQLAlchemy を用いたリレーショナルデータベースへの接続設定、ORM モデルの定義、CRUD 操作、トランザクションコミット・ロールバックの基本的な実装パターンについてのまとめ。

参考ブログ記事
#


1. セットアップとモデル定義
#

 1from flask_sqlalchemy import SQLAlchemy
 2
 3db = SQLAlchemy()
 4
 5class User(db.Model):
 6    __tablename__ = "users"
 7
 8    id = db.Column(db.Integer, primary_key=True)
 9    username = db.Column(db.String(80), unique=True, nullable=False)
10    email = db.Column(db.String(120), unique=True, nullable=False)
11    created_at = db.Column(db.DateTime, default=db.func.current_timestamp())

2. CRUD 操作
#

SELECT (参照)
#

1# 全件取得
2users = User.query.all()
3
4# 主キー検索
5user = User.query.get(user_id)
6
7# 条件絞り込み
8user = User.query.filter_by(username="admin").first()

INSERT (追加)
#

1new_user = User(username="alice", email="alice@example.com")
2db.session.add(new_user)
3db.session.commit()

UPDATE (更新)
#

1user = User.query.get(user_id)
2user.email = "new_email@example.com"
3db.session.commit()

DELETE (削除)
#

1user = User.query.get(user_id)
2db.session.delete(user)
3db.session.commit()

3. トランザクション管理とエラーハンドリング
#

例外発生時には必ず db.session.rollback() を行い、セッションの不整合を防ぐ。

1try:
2    # 複数テーブルへの更新処理など
3    db.session.commit()
4except Exception as e:
5    db.session.rollback()
6    raise e

ここに掲載する記事はまだありません。