Skip to content

Group by Schema

This recipe demonstrates how to group tables by their database schema. This is useful for databases like PostgreSQL that use schemas to organize tables.

Configuration

In your mkdocs.yml:

plugins:
  - sqlalchemy:
      base_class: "by_schema.models.Base"
      app_path: "src"
      display:
        group_by_schema: true

Usage

In your markdown file:

# MkDocs SqlAlchemy Plugin

{% sqlalchemy %}

The output will be grouped by schema, with a heading for each schema.


Result

Schema: blog

Table: posts

column type nullable default primary_key unique foreign_key
id INTEGER ✔️
title VARCHAR(200)
content TEXT ✔️
is_published BOOLEAN ✔️ False
user_id INTEGER ✔️ users.id
created_at DATETIME ✔️ utcnow
updated_at DATETIME ✔️ utcnow

Indexes:

  • ix_blog_posts_updated_at: updated_at

Constraints:

  • fk_posts_user_id_users (ForeignKeyConstraint)
  • pk_posts (PrimaryKeyConstraint)

Schema: profiles

Table: user_profiles

column type nullable default primary_key unique foreign_key
id INTEGER ✔️
user_id INTEGER ✔️ ✔️ users.id
first_name VARCHAR(50) ✔️
last_name VARCHAR(50) ✔️
bio TEXT ✔️

Indexes: None

Constraints:

  • fk_user_profiles_user_id_users (ForeignKeyConstraint)
  • uq_user_profiles_user_id (UniqueConstraint)
  • pk_user_profiles (PrimaryKeyConstraint)

Table: users

column type nullable default primary_key unique foreign_key
id INTEGER ✔️
username VARCHAR(50) ✔️
email VARCHAR(120) ✔️
is_active BOOLEAN ✔️ True
created_at DATETIME ✔️ utcnow

Indexes: None

Constraints:

  • uq_users_email (UniqueConstraint)
  • pk_users (PrimaryKeyConstraint)
  • uq_users_username (UniqueConstraint)