SQLAlchemy - gosaaan1/hokulea-garage GitHub Wiki

宣言型マッピング と 命令型マッピング

from sqlalchemy import Integer, String, ForeignKey
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column


# declarative base class
class Base(DeclarativeBase):
    pass


# an example mapping using the base
class User(Base):
    __tablename__ = "user"

    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    fullname: Mapped[str] = mapped_column(String(30))
    nickname: Mapped[Optional[str]]
  • 命令型マッピング: 古典的(クラシック)な書き方。宣言型マッピングを使いましょう。
from sqlalchemy import Table, Column, Integer, String, ForeignKey
from sqlalchemy.orm import registry

mapper_registry = registry()

user_table = Table(
    "user",
    mapper_registry.metadata,
    Column("id", Integer, primary_key=True),
    Column("name", String(50)),
    Column("fullname", String(50)),
    Column("nickname", String(12)),
)


class User:
    pass


mapper_registry.map_imperatively(User, user_table)

SQLAlchemy統合チュートリアル

ORM Query Guide

  • ユースケース別なので、こちらの方がわかりやすい?

Working with Database Metadata: データベース・メタデータの操作

Data Manipulation with the ORM: ORM によるデータ操作

  • INSERT, SELECT, UPDATE, DELETE の基本。

Working with ORM Related Objects: ORM 関連オブジェクトの操作

  • リレーションとテーブル結合について。

Further Reading: 参考文献

以下のセクションは、概念について説明する主要なトップレベルのセクションです。 このチュートリアルでは、各サブシステムのさらに多くの機能について詳しく説明します。

Core Essential Reference

ORM Essential Reference

生産性を高めるために

Python型へのマッピング

from sqlalchemy.orm import DeclarativeBase


class Base(DeclarativeBase):
    pass


class MyClass(Base):
    __tablename__ = "sometable"
    __table_args__ = {"schema": "some_schema"}