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

第14章. 料理本

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

この章はこれまでの章とは異なり、それぞれの節で SQLAlchemy を使う上での異なる側面に 焦点をあてている。この章では、前の章ほど詳しくは扱わない。便利なツールの簡単な紹介と 考えてほしい。 各節の終わりには、興味があればどこでもっと学べるかについての情報がある。これらのセクションは完全なチュートリアルではなく、特定のタスクを達成するための短いレシピを紹介している。この章の最初のパートは SQLAlchemy のいくつかの高度な使い方に焦点を当て、次のパートは SQLAlchemy を Flask のような Web フレームワークと一緒に使うことについて、そして最後のセクションは SQLAlchemy と一緒に使える追加のライブラリについてである。

ハイブリッド属性

ハイブリッド属性とは、クラスメソッドとしてアクセスされたときに ある振る舞いを示し、インスタンスにアクセスされたときに別の振る舞いを示すもので ある。別の考え方をすると、その属性が SQLAlchemy 文で使われたときには有効な SQL を生成し、インスタンスでアクセスされたときにはハイブリッド属性がインスタンスに対して直接 Python コードを実行するということだ。コードを発見するときに、これを理解するのが一番簡単だと思う。例14-1ではCookie 宣言クラスを使ってこれを説明する。

例14-1. クッキーのユーザ・データ・モデル
from datetime import datetime

from sqlalchemy import Column, Integer, Numeric, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.hybrid import hybrid_property, hybrid_method
from sqlalchemy.orm import sessionmaker


engine = create_engine('sqlite:///:memory:')

Base = declarative_base()


class Cookie(Base):
    __tablename__ = 'cookies'

    cookie_id = Column(Integer, primary_key=True)
    cookie_name = Column(String(50), index=True)
    cookie_recipe_url = Column(String(255))
    cookie_sku = Column(String(55))
    quantity = Column(Integer())
    unit_cost = Column(Numeric(12, 2))

    @hybrid_property 1
    def inventory_value(self):
        return self.unit_cost * self.quantity ...
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