SQLAlchemy - gosaaan1/hokulea-garage GitHub Wiki
宣言型マッピング と 命令型マッピング
- 宣言型マッピング: SQLAlchemyで主に使用する書き方。
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: データベース・メタデータの操作
- SQLAlchemy式言語を使い始めるには、データベース全体を表すオブジェクトを構築する必要があります。
Data Manipulation with the ORM: ORM によるデータ操作
- INSERT, SELECT, UPDATE, DELETE の基本。
Working with ORM Related Objects: ORM 関連オブジェクトの操作
- リレーションとテーブル結合について。
Further Reading: 参考文献
以下のセクションは、概念について説明する主要なトップレベルのセクションです。 このチュートリアルでは、各サブシステムのさらに多くの機能について詳しく説明します。
Core Essential Reference
- Working with Engines and Connections
- Schema Definition Language
- SQL Statements and Expressions API
- SQL Datatype Objects
ORM Essential Reference
生産性を高めるために
Python型へのマッピング
- 複数の型構成を Python 型にマッピングする: 文字列の長さや数値の精度に名前を付けて管理することができる。
- 列全体の宣言を Python 型にマッピングする: 列の属性(NOT NULL制約付きの日時など、列全体の宣言の組み合わせに名前を付けて管理することができる。
- タイプマップで Python または pep-586 型を使用する: 独自の列挙型を管理することができる。
- 宣言型テーブルを使用した明示的なスキーマ名: モデルを管理するスキーマを指定することができる。
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class MyClass(Base):
__tablename__ = "sometable"
__table_args__ = {"schema": "some_schema"}