{"id":21681,"library":"paracelsus","title":"Paracelsus","description":"Visualize SQLAlchemy databases using Mermaid or Graphviz (Dot) diagrams. Supports generating entity-relationship diagrams (ERDs) from SQLAlchemy models. Version 0.15.0, active development.","status":"active","version":"0.15.0","language":"python","source_language":"en","source_url":"https://github.com/trallnag/paracelsus","tags":["sqlalchemy","erd","diagram","mermaid","graphviz","visualization"],"install":[{"cmd":"pip install paracelsus","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Paracelsus inspects SQLAlchemy models to generate diagrams.","package":"sqlalchemy","optional":false},{"reason":"Required for Dot output; needed for rendering diagrams if not using Mermaid.","package":"graphviz","optional":true}],"imports":[{"note":"Primary function to generate diagram from SQLAlchemy metadata or declarative base.","wrong":null,"symbol":"generate_er_diagram","correct":"from paracelsus import generate_er_diagram"}],"quickstart":{"code":"from sqlalchemy import create_engine, MetaData\nfrom paracelsus import generate_er_diagram\n\nengine = create_engine('sqlite:///:memory:')\nmetadata = MetaData()\nmetadata.reflect(bind=engine)\ndiagram = generate_er_diagram(metadata, format='mermaid')\nprint(diagram)","lang":"python","description":"Reflect database schema and generate a Mermaid ER diagram string."},"warnings":[{"fix":"Always specify the format parameter: generate_er_diagram(metadata, format='mermaid') or generate_er_diagram(metadata, format='dot').","message":"The default output format changed in v0.12.0 from 'dot' to 'mermaid'. Ensure you specify format='mermaid' or format='dot' explicitly to avoid unexpected output.","severity":"gotcha","affected_versions":">=0.12.0"},{"fix":"Call generate_er_diagram(metadata, ...) instead of relying on previous positional order.","message":"In v0.15.0, the function signature changed; the 'metadata' parameter is now required as the first positional argument. Passing it as a keyword argument still works but ensure order.","severity":"breaking","affected_versions":"0.15.0"},{"fix":"Use Base.metadata directly: generate_er_diagram(Base.metadata, ...).","message":"Reflecting a database requires an active engine connection. If using a declarative base, use Base.metadata instead of reflecting.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Ensure you have installed paracelsus>=0.12.0 and use: from paracelsus import generate_er_diagram","cause":"Importing the wrong submodule or using an outdated version.","error":"AttributeError: module 'paracelsus' has no attribute 'generate_er_diagram'"},{"fix":"Pass the metadata object: generate_er_diagram(metadata, ...)","cause":"The function requires metadata as the first argument; in v0.15.0 it is not optional.","error":"TypeError: generate_er_diagram() missing 1 required positional argument: 'metadata'"},{"fix":"Ensure the database has tables or use a declarative base: generate_er_diagram(Base.metadata, ...)","cause":"The database engine connected to an empty database or no tables exist.","error":"sqlalchemy.exc.InvalidRequestError: Could not reflect: database has no tables"},{"fix":"Install Graphviz system package (e.g., 'apt install graphviz' on Ubuntu or 'brew install graphviz' on macOS) or use format='mermaid'.","cause":"Graphviz is not installed on the system; required for 'dot' format output.","error":"graphviz.backend.ExecutableNotFound: failed to execute ['dot', ...]"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}