Skip to main content

ER図可視化ライブラリ - SVGとdraw.io形式での出力をサポート

Project description

in4viz - ER図可視化ライブラリ

Python製のER図専用可視化ライブラリ。SVGとdraw.io形式での出力をサポートします。

特徴

  • 2つの出力形式: SVGとdraw.io (mxGraph XML)
  • 統合されたコアアーキテクチャ: 共通のデータモデルとレイアウトエンジン
  • 自動レイアウト: FK関係を考慮した階層的配置
  • 日本語対応: 論理名・物理名の両方表示
  • カーディナリティ表示: IE記法でのカーディナリティ表現
  • 複数の線種: 直線、クランク、スプライン

インストール

pip install in4viz

基本的な使い方

SVG出力

from in4viz import ERDiagram, Table, Column, LineType, Cardinality

# SVGバックエンドでER図を作成
diagram = ERDiagram(backend='svg')

# テーブルを定義
users_table = Table(
    name='users',
    logical_name='ユーザー',
    columns=[
        Column('id', 'ID', 'INT', primary_key=True, nullable=False),
        Column('name', '名前', 'VARCHAR(100)', nullable=False),
        Column('email', 'メール', 'VARCHAR(255)', nullable=False, index=True),
    ]
)

posts_table = Table(
    name='posts',
    logical_name='投稿',
    columns=[
        Column('id', 'ID', 'INT', primary_key=True, nullable=False),
        Column('user_id', 'ユーザーID', 'INT', nullable=False, foreign_key=True),
        Column('title', 'タイトル', 'VARCHAR(200)', nullable=False),
        Column('content', '本文', 'TEXT'),
    ]
)

# テーブルを追加
diagram.add_table(users_table)
diagram.add_table(posts_table)

# FK関係を追加
diagram.add_edge(
    'posts', 'users',
    line_type=LineType.CRANK,
    cardinality=Cardinality(from_side='*', to_side='1')
)

# SVGファイルとして保存
diagram.save('er_diagram.svg')

draw.io出力

from in4viz import ERDiagram, Table, Column

# draw.ioバックエンドでER図を作成
diagram = ERDiagram(backend='drawio')

# テーブルを追加(同じTableオブジェクトを使用)
diagram.add_table(users_table)
diagram.add_table(posts_table)
diagram.add_edge('posts', 'users')

# draw.ioファイルとして保存
diagram.save('er_diagram.drawio')

バックエンド直接指定

特定のバックエンドを直接使用することもできます:

from in4viz.backends.svg import SVGERDiagram
from in4viz.backends.drawio import DrawioERDiagram

# SVG専用
svg_diagram = SVGERDiagram()
svg_diagram.add_table(users_table)
svg_diagram.save_svg('output.svg')

# draw.io専用
drawio_diagram = DrawioERDiagram()
drawio_diagram.add_table(users_table)
drawio_diagram.save_drawio('output.drawio')

アーキテクチャ

in4viz/
├── core/                  # 共通コア(80%)
│   ├── models.py         # データモデル(Table, Column, LineType, Cardinality)
│   ├── layout.py         # レイアウトアルゴリズム(階層構築、自動配置)
│   └── text_metrics.py   # 文字幅計算
├── backends/             # 出力形式別実装(20%)
│   ├── svg/             # SVG出力
│   │   ├── canvas.py
│   │   ├── stencil.py
│   │   └── renderer.py
│   └── drawio/          # draw.io出力
│       ├── canvas.py
│       ├── stencil.py
│       ├── renderer.py
│       └── generator.py
└── er_diagram.py        # ユーザーAPI

主要機能

データモデル

  • Table: テーブル定義(論理名・物理名)
  • Column: カラム定義(型、制約、PK/FK/Index)
  • LineType: 線種(STRAIGHT, CRANK, SPLINE)
  • Cardinality: カーディナリティ(1, 0..1, *, 1..*など)

レイアウトエンジン

  • FK関係を考慮した階層的自動配置
  • 逆トポロジカルソートによる階層構築
  • 関連テーブルの隣接配置
  • 動的キャンバスサイズ調整

表示機能

  • テーブル名:論理名 (物理名)
  • カラム:論理名 (物理名) 型 [制約]
  • PKカラムの境界線表示
  • NOT NULLマーカー(黒四角)
  • FK、Indexの制約表示

ライセンス

MIT License

開発

# 開発モードでインストール
cd packages/in4viz
pip install -e .

# テスト実行
pytest

貢献

プルリクエストを歓迎します!バグ報告や機能要望はIssueでお願いします。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

in4viz-0.7.0.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

in4viz-0.7.0-py3-none-any.whl (38.5 kB view details)

Uploaded Python 3

File details

Details for the file in4viz-0.7.0.tar.gz.

File metadata

  • Download URL: in4viz-0.7.0.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/5.15.136-tegra

File hashes

Hashes for in4viz-0.7.0.tar.gz
Algorithm Hash digest
SHA256 fbc29f66d31742ed68698793692a40b5a99f4181444397147fb25d43e9310e6c
MD5 b3bda3b424a4f143fa30ba3d56d859ff
BLAKE2b-256 d362de55ba06e440d1d3080c099273b3b49b8121634c509425aa9ea78d61725c

See more details on using hashes here.

File details

Details for the file in4viz-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: in4viz-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 38.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/5.15.136-tegra

File hashes

Hashes for in4viz-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5326683b47528f801daba4f7c229b0ee37c2073b6f7eef39e024ac7f63b33ea3
MD5 2b69d49f9fc6fe1b6f59c3d440df36d0
BLAKE2b-256 425260c2d4a40138a9200273c7c2ac7879add1c6cc0d4c4f9d29a2d7fda960e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page