SQLAlchemy Unified Tutorial

About this document

SQLAlchemy Unified Tutorialは、SQLAlchemyのコアコンポーネントとORMコンポーネントの間に統合されており、SQLAlchemy全体の統一された入門書として機能します。1.xシリーズのSQLAlchemyのユーザにとって、 2.0 style の作業では、ORMは select() 構文でコアスタイルのクエリを使用し、コア接続とORMセッション間のトランザクションセマンティクスは同等です。各セクションの青いボーダースタイルに注目してください。これにより、特定のトピックがいかに「ORM的」であるかがわかります!

すでにSQLAlchemyに慣れているユーザ、特に1.4の移行フェーズでSQLAlchemy 2.0シリーズの下で動作するように既存のアプリケーションを移行したいと考えているユーザは、 SQLAlchemy 2.0 - Major Migration Guide ドキュメントもチェックしてください。

初心者のために、この文書には 多くの 詳細がありますが、最後には Alchemist となれるでしょう。

SQLAlchemyは、2つの異なるAPIとして提供され、一方は他方の上に構築されます。これらのAPIは Core および ORM として知られています。

SQLAlchemy Core は、”データベース・ツールキット”としてのSQLAlchemyの基本アーキテクチャです。このライブラリには、データベースへの接続を管理し、データベースのクエリーと結果を操作し、SQL文をプログラムで構築するためのツールが用意されています。

SQLAlchemy ORM はCore上に構築され、オプションの オブジェクトリレーショナルマッピング 機能を提供します。ORMは、ユーザー定義のPythonクラスをデータベーステーブルやその他の構成体に マッピング できるようにする追加の構成レイヤーと、 Session として知られるオブジェクト持続性メカニズムを提供します。次に、コアレベルのSQL式言語を拡張して、ユーザー定義オブジェクトの観点からSQLクエリを構成し、呼び出すことができるようにします。

このチュートリアルのほとんどの**セクションでは、 **ORMでも明示的に使用されるコア概念について説明しています 。特にSQLAlchemy 2.0は、ORM内でのコアAPI使用の統合レベルが大幅に向上しています。

これらの各セクションには、ORMユーザがこれらのプログラミングパターンをどの程度使用することを期待すべきかを議論する 導入テキスト があります。これらのセクションのSQLAlchemy構文は、 sqlalchemy.orm 構文を同時に使用する可能性がある sqlalchemy 名前空間からインポートされます。主題分類の追加的な指標として、これらのセクションには 左側の薄い明るい境界と右側の厚い暗い境界の両方 が含まれます。コアユーザとORMユーザは、これらのセクションの概念を等しく理解する必要があります。

Tutorial Overview

このチュートリアルでは、両方の概念を学習すべき自然な順序で提示します。最初は主にコア中心のアプローチで、次にORM中心の概念に広がります。

このチュートリアルの主なセクションは次のとおりです。:

  • Working with Database Metadata - SQLAlchemyのSQL抽象化とORMは、データベーススキーマ構造をPythonオブジェクトとして定義するシステムに依存しています。このセクションでは、コアとORMの両方の観点からそれを行う方法を紹介します。

  • Working with Data - ここでは、データベース内のデータを作成、選択、更新、削除する方法を学びます。ここでのいわゆる CRUD 操作は、SQLAlchemy Coreの観点から、対応するORMへのリンクとともに提供されます。 Using SELECT Statements で詳細に紹介されているSELECT操作は、CoreとORMに等しく適用されます。

  • Data Manipulation with the ORM は、ORMのパーシステンスフレームワークをカバーしています。基本的には、ORMを中心とした挿入、更新、削除の方法と、トランザクションの処理方法です。

  • Further Reading は、このチュートリアルで紹介された概念を完全に文書化した、一連の主要なトップレベルの文書セクションをリストしています。

Version Check

このチュートリアルは doctest と呼ばれるシステムを使って書かれています。 >>> で書かれたコードの抜粋はすべて、実際にはSQLAlchemyのテストスイートの一部として実行されます。読者は、独自のPythonインタプリタを使って、リアルタイムで与えられたコード例を使って作業するように招待されています。

例を実行する場合、読者はSQLAlchemyの**バージョン2.0**を使用していることを簡単に確認することをお勧めします。:

>>> import sqlalchemy
>>> sqlalchemy.__version__  
2.0.0