O'Reilly logo

Essential SQLAlchemy by Rick Copeland

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 8. Inheritance Mapping

In this chapter, you will learn the different methods of mapping object-oriented inheritance to relational database tables. You will learn how to use different methods of inheritance mapping with SQLAlchemy, as well as how to use inheritance in the presence of mapped relations between classes.

Overview of Inheritance Mapping

No object-relational mapper would be complete without some method of mapping object-oriented inheritance hierarchies to SQL tables, and so SQLAlchemy provides rich support for modeling inheritance. Inheritance is typically modeled in SQL in one of three ways: single table inheritance, concrete table inheritance, or joined table inheritance.

For the purposes of illustrating SQLAlchemy’s support for the various types of inheritance modeling, we will use a simple inheritance hierarchy that models products, including clothing products and accessories. This hierarchy is illustrated in Figure 8-1 and is implemented by the following Python code:

class Product(object):
    def __init__(self, sku, msrp):
        self.sku = sku
        self.msrp = msrp
    def __repr__(self):
        return '<%s %s>' % (
            self.__class__.__name__, self.sku)

class Clothing(Product):
    def __init__(self, sku, msrp, clothing_info):
        Product.__init__(self, sku, msrp)
        self.clothing_info = clothing_info

class Accessory(Product):
    def __init__(self, sku, msrp, accessory_info):
        Product.__init__(self, sku, msrp)
        self.accessory_info = accessory_info

Figure 8-1. Sample inheritance hierarchy

Single Table Inheritance ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required