Skip to Content
Essential SQLAlchemy, 2nd Edition
book

Essential SQLAlchemy, 2nd Edition

by Jason Myers, Rick Copeland
May 2025
Intermediate to advanced
208 pages
2h 55m
Japanese
O'Reilly Media, Inc.
Content preview from Essential SQLAlchemy, 2nd Edition

第10章. SQLAlchemy ORMと Automapによるリフレクション

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

第 5 章で学んだように、リフレクションは既存のデータベースから SQLAlchemy オブジェクトを生成することができます。リフレクションはテーブル、ビュー、インデックス、外部キーに対して動作します。リフレクションはテーブル、ビュー、インデックス、外部キーに対して働きます。しかし、データベー スのスキーマを ORM スタイルのクラスに反映させたい場合はどうしたらよいでしょうか? 幸運なことに、便利な SQLAlchemy エクステンションの automap を使えば、それができる。

しかし、SQLAlchemy のバージョン 1.0 では、CheckConstraints やコメント、トリガを反映することはできない。 また、クライアントサイドのデフォルトや、シーケンスとカラムの関連付けも反映でき ません。しかし、第6章で学んだメソッドを使って、手作業で追加することは可能です。

第5章と同様、テストにはChinookデータベースを使用する。本書のサンプルコードのCH11/フォルダにあるSQLiteバージョンを使用する。そのフォルダにはデータベーススキーマのイメージも含まれているので、この章を通して扱うスキーマを視覚化することができる。

Automapでデータベースを反映する

データベースを反映させるために、これまでORMで使ってきたdeclarative_base の代わりに、automap_base.例10-1に示すように、Base オブジェクトを作成して作業することから始めよう。

例 10-1. automap_baseでBaseオブジェクトを作成する。
from sqlalchemy.ext.automap import automap_base 1

Base = automap_base() 2
1

オートマップエクステンションからautomap_base をインポートする。

2

Base オブジェクトを初期化する。

次に、反映させたいデータベースに接続したエンジンが必要である。例10-2はChinookデータベースに接続する方法を示している。

例 10-2. Chinookデータベースのエンジンを初期化する
from sqlalchemy import create_engine

engine = create_engine('sqlite:///Chinook_Sqlite.sqlite ...
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

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Essential SQLAlchemy, 2nd Edition

Essential SQLAlchemy, 2nd Edition

Jason Myers, Rick Copeland
High Performance Python, 3rd Edition

High Performance Python, 3rd Edition

Micha Gorelick, Ian Ozsvald
Python in a Nutshell, 4th Edition

Python in a Nutshell, 4th Edition

Alex Martelli, Anna Martelli Ravenscroft, Steve Holden, Paul McGuire

Publisher Resources

ISBN: 9798341649866