4-4. データベース設計とORM(SQLAlchemy)

RDBの基礎とSQL操作

  • 正規化: データの重複を排除し、整合性を保つテーブル設計手法。
  • 主キー(Primary Key): レコードを一意に特定するID。
  • 外部キー(Foreign Key): 他のテーブルを参照しリレーションを構築するキー。

SQL

-- ユーザーテーブル作成SQL
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

-- データ抽出と結合 (JOIN)
SELECT users.name, orders.amount 
FROM users 
JOIN orders ON users.id = orders.user_id;

SQLAlchemyを用いたORM構築

ORM(Object-Relational Mapping)を使うと、SQLを書かずにPythonクラスとしてデータベース操作が行えます。

Python

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()

# モデル定義
class User(Base):
    __tablename__ = "users"
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)
    email = Column(String(100), unique=True, nullable=False)

# データベース接続の設定 (SQLite例)
engine = create_engine("sqlite:///app.db")
Base.metadata.create_all(engine)

SessionLocal = sessionmaker(bind=engine)
db = SessionLocal()

# CRUD操作: CREATE
new_user = User(name="Alice", email="alice@example.com")
db.add(new_user)
db.commit()

# CRUD操作: READ
user = db.query(User).filter(User.email == "alice@example.com").first()

コメント

タイトルとURLをコピーしました