Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Entity Relation Diagrams generation tool

License

NotificationsYou must be signed in to change notification settings

eralchemy/eralchemy

Repository files navigation

licensePyPI - VersionPyPI DownloadsGitHub Actions Workflow StatusCodecov

Entity relation diagrams generator

eralchemy generates Entity Relation (ER) diagram (like the one below) from databases or from SQLAlchemy models.

Example

Example for a graph

Quick Start

Install

To install eralchemy, just do:

$ pip install eralchemy

Graph library flavors

To create Pictures and PDFs, eralchemy relies on either graphviz or pygraphviz.

You can use either

$ pip install eralchemy[graphviz]

or

$ pip install eralchemy[pygraphviz]

to retrieve the correct dependencies.Thegraphviz library is the default if both are installed.

eralchemy requiresGraphViz to generate the graphs and Python. Both are available for Windows, Mac and Linux.

For Debian based systems, run:

$ apt install graphviz libgraphviz-dev

before installing eralchemy.

Install using conda

There is also a packaged version in conda-forge, which directly installs the dependencies:

$ conda install -c conda-forge eralchemy

Usage from Command Line

From a database

$ eralchemy -i sqlite:///relative/path/to/db.db -o erd_from_sqlite.pdf

The database is specified as aSQLAlchemydatabase url.

From a markdown file.

$ curl 'https://raw.githubusercontent.com/eralchemy/eralchemy/main/example/forum.er' > markdown_file.er$ eralchemy -i 'markdown_file.er' -o erd_from_markdown_file.pdf

From a Postgresql DB to a markdown file excluding tables namedtemp andaudit

$ eralchemy -i 'postgresql+psycopg2://username:password@hostname:5432/databasename' -o filtered.er --exclude-tables temp audit

From a Postgresql DB to a markdown file excluding columns namedcreated_at andupdated_at from all tables

$ eralchemy -i 'postgresql+psycopg2://username:password@hostname:5432/databasename' -o filtered.er --exclude-columns created_at updated_at

From a Postgresql DB to a markdown file for the schemasschema1 andschema2

$ eralchemy -i 'postgresql+psycopg2://username:password@hostname:5432/databasename' -s "schema1, schema2"

Specify Output Mode

$ eralchemy -i 'markdown_file.er' -o erd_from_markdown_file.md -m mermaid_er

Usage from Python

fromeralchemyimportrender_er## Draw from SQLAlchemy baserender_er(Base,'erd_from_sqlalchemy.png')## Draw from databaserender_er("sqlite:///relative/path/to/db.db",'erd_from_sqlite.png')

Adjustments to the rendering config

When rendering dot files, it can be needed to adjust how some parts are visualized.This can be used to getcrowfoot relations, stars instead of underlines for primary keys or a top-bottom rendering instead the default left-right rendering.

It can be adjusted by manipulating the globalfrom eralchemy.cst import config dictionary.

Some helper functions exist likedot_star_primary,dot_top_down,dot_digraph anddot_crowfoot.The config can be reset usingreset_config.

This can be used like

fromeralchemyimportrender_erfromeralchemy.cstimportdot_crowfoot,dot_digraphdot_crowfoot()dot_digraph()render_er(Base,"forum.svg")

Architecture

graph LR    subgraph Inputs        A[Markdown representation]        B[SQLAlchemy Schema]        C[Existing database]        D[Other ORM ?]    end    E[Intermediary representation]    subgraph Outputs        F[Markdown representation]        G[Graphviz code]        H[Drawing]    end    A --> E    B --> E    C --> E    D --> E    E --> F    E --> G    E --> H
Loading

Thanks to it's modular architecture, it can be connected to other ORMs/ODMs/OGMs/O*Ms.

Contribute

Every feedback is welcome on theGitHub issues.

Development

Install the development dependencies using

$ pip install -e .[dev,test]

Make sure to run the pre-commit to fix formatting

$ pre-commit run --all

All tested PR are welcome.

Running tests

This project uses the pytest test suite.To run the tests, use :$ pytest or$ nox.

Some tests require having a local PostgreSQL database with a schema named test in a databasenamed test all owned by a user named eralchemy with a password of eralchemy.If docker compose is available, one can usedocker compose up -d for this purpose.You can deselect the tests which require a PostgreSQL database using:

$ pytest -m "not external_db"

Publishing a release

$ rm -r dist && python -m build && python3 -m twine upload --repository pypi dist/*

Notes

ERAlchemy was inspired byerd, though it is able to render the ER diagram directlyfrom the database and not just only from theER markup language.

Released under an Apache License 2.0


[8]ページ先頭

©2009-2025 Movatter.jp