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.5.0.tar.gz (24.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.5.0-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: in4viz-0.5.0.tar.gz
  • Upload date:
  • Size: 24.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.5.0.tar.gz
Algorithm Hash digest
SHA256 fadf6fc7ba8dc304aec358e32bd3a38209a3556c3a9cce7d7b91273b5369b2f9
MD5 ca70d2bffbfd90e050ee0ff187b03471
BLAKE2b-256 96ae7522b2b79f74a70cae081877a03b75047b05beafaacd1a46c2b978a978b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: in4viz-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 29.9 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d601f2e1ae52000f95c6f8665cb5cc8665d8c8c9ad44d2f097ac15d5a771f3b
MD5 cab59e17620972fc40c7307bacd889ef
BLAKE2b-256 557f9a0c9d82553cf40115c3a5070faf427fa874cd03f966fafb353c5fb0f9df

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