Schema Definition Language¶
This section references SQLAlchemy schema metadata, a comprehensive system of describing and inspecting database schemas.
The core of SQLAlchemy’s query and object mapping operations are supported by database metadata, which is comprised of Python objects that describe tables and other schema-level objects. These objects are at the core of three major types of operations - issuing CREATE and DROP statements (known as DDL), constructing SQL queries, and expressing information about structures that already exist within the database.
Database metadata can be expressed by explicitly naming the various components
and their properties, using constructs such as
Table
, Column
,
ForeignKey
and
Sequence
, all of which are imported from the
sqlalchemy.schema
package. It can also be generated by SQLAlchemy using a
process called reflection, which means you start with a single object such
as Table
, assign it a name, and then instruct
SQLAlchemy to load all the additional information related to that name from a
particular engine source.
A key feature of SQLAlchemy’s database metadata constructs is that they are designed to be used in a declarative style which closely resembles that of real DDL. They are therefore most intuitive to those who have some background in creating real schema generation scripts.
- Describing Databases with MetaData
- Reflecting Database Objects
- Column INSERT/UPDATE Defaults
- Scalar Defaults
- Python-Executed Functions
- Client-Invoked SQL Expressions
- Server-invoked DDL-Explicit Default Expressions
- Marking Implicitly Generated Values, timestamps, and Triggered Columns
- Defining Sequences
- Computed Columns (GENERATED ALWAYS AS)
- Identity Columns (GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY)
- Default Objects API
- Defining Constraints and Indexes
- Customizing DDL