SQLAlchemy入門
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
SQLAlchemyは様々なデータベースとやりとりするためのライブラリだ。 通常の Python のクラスや文のような感覚でデータモデルやクエリを作成することができる。 Mike Bayerによって2005年に作成されたSQLAlchemyは、大小さまざまな企業で使われており、Pythonでリレーショナルデータベースを扱うデファクトな方法として多くの人に考えられている。
Postgres、MySQL、SQLite、Oracleなど、一般的なデータベースに接続できる。また、他のリレーショナルデータベースのサポートを追加する方法も提供している。 PostgreSQLのカスタム方言を使用するAmazon Redshiftは、コミュニティによって追加されたデータベースサポートの素晴らしい例である。
この章では、なぜ SQLAlchemy が必要なのか、SQLAlchemy の2つの主要なモードについて学び、 データベースに接続する。
なぜSQLAlchemyを使うのか?
SQLAlchemy を使う最大の理由は、あなたのコードを、基礎となるデータベースとそれに 関連する SQL の特殊性から抽象化することだ。 SQLAlchemy は強力な共通ステートメントと型を活用し、SQL 文がそれぞれのデータベー スタイプとベンダに対して効率的かつ適切に作られるようにします。これにより、Oracle から PostgreSQL へ、あるいはアプリケーションデータベースからデータ ウェアハウスへのロジックの移行が容易になる。また、データベースに送信される前に、データベース入力がサニタイズされ、適切にエスケープされることを保証するのにも役立つ。これにより、SQLインジェクション攻撃のような一般的な問題を防ぐことができる。
SQLAlchemy はまた、2つの主要な利用モードを提供することで、多くの柔軟性を提供している:SQL 式言語(一般に Core と呼ばれる)と ORM である。これらのモードは、あなたの好みやアプリケーションのニーズに応じて、別々に使うことも、一緒に使うこともできます。
SQLAlchemy コアと SQL 式言語
SQL式言語は、一般的なSQL文や式を表現するPython的な方法であり、一般的なSQL言語から軽度の抽象化を行っているに過ぎない。実際のデータベーススキーマに焦点を当てている。しかし、多くのバックエンドデータベースで一貫した言語を提供するように標準化されている。SQL 式言語は SQLAlchemy ORM の基盤としても機能する。
ORM
SQLAlchemy ORM は、あなたが他の言語で出会ったことのある多くのオブジェクトリレーショナルマッパ (ORM)に似ている。アプリケーションのドメインモデル に焦点を当て、オブジェクトの状態を維持するために Unit of Work パターンを活用する。ORMとSQL表現言語を組み合わせて使用することで、非常に強力なアプリケーションを作成することができる。ORMは、Ruby on Railsで発見されたものなど、他の多くのORMで使われているアクティブレコードシステムに似た宣言型システムを活用している。
ORMは非常に便利だが、クラスがリレーショナルになる方法と、基礎となるデータベースのリレーションがどのように機能するかには違いがあることを覚えておく必要がある。これが実装にどのような影響を与えるかについては、 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access