Quickstart¶
This walks through the whole flow in a few minutes, starting from nothing.
The zero-setup path¶
If you just want to see it work, tdw demo needs no database of your own:
tdw demo --seed 42
It builds a small SQLite e-commerce database (users, categories, products,
orders, order items), analyzes it, and deploys a generator set against it. The
--seed makes the run reproducible.
Against your own database¶
Point analyze at any SQLAlchemy connection string to see what the tool makes
of your schema:
tdw analyze "sqlite:///shop.db"
tdw analyze "postgresql://user:pass@host:5432/shop"
The report lists tables with their inferred entity types, detected
relationships, candidate business rules, and any columns flagged as potential
PII. To read only structure and never touch row data, add --metadata-only
(see Privacy and Data Access).
Generate the generators¶
deploy runs the full pipeline and writes an output tree:
tdw deploy "sqlite:///shop.db" --output ./generated --seed 42
The result:
generated/
├── generators/ # one runnable generator per table
├── scenarios/ # volume presets
├── config.yaml
└── CONTRIBUTING.md
Run a generated generator¶
The generators are ordinary Python. Import one and call it:
from generated.generators.users import UsersGenerator
gen = UsersGenerator(seed=42)
for row in gen.generate(5):
print(row)
Because the seed is fixed, this prints the same five rows every time. Remove the seed for fresh data on each run.
Next steps¶
Understand the output: Design Principles
See how classification works and where it is fallible: Schema Adaptation
Full command reference: CLI Reference