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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
in4viz-0.5.0-py3-none-any.whl
(29.9 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fadf6fc7ba8dc304aec358e32bd3a38209a3556c3a9cce7d7b91273b5369b2f9
|
|
| MD5 |
ca70d2bffbfd90e050ee0ff187b03471
|
|
| BLAKE2b-256 |
96ae7522b2b79f74a70cae081877a03b75047b05beafaacd1a46c2b978a978b9
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d601f2e1ae52000f95c6f8665cb5cc8665d8c8c9ad44d2f097ac15d5a771f3b
|
|
| MD5 |
cab59e17620972fc40c7307bacd889ef
|
|
| BLAKE2b-256 |
557f9a0c9d82553cf40115c3a5070faf427fa874cd03f966fafb353c5fb0f9df
|