Skip to content

Incremental Generation

Grow an existing dataset without regenerating from scratch. IDs auto-offset, FK integrity is maintained across both batches.

import misata

# Initial seed
schema = misata.parse("A fintech company with 1000 customers", rows=1000)
tables = misata.generate_from_schema(schema, seed=1)
print(len(tables["customers"]))  # 1000

# Add 1000 more rows later
tables = misata.generate_more(tables, schema, n=1000, seed=2)
print(len(tables["customers"]))  # 2000

How IDs are handled

generate_more offsets integer id columns in the new batch so they don't collide with existing rows:

existing_max_id = tables["customers"]["id"].max()   # e.g. 1000
# New batch IDs start from 1001 automatically

Use cases

  • Streaming test fixtures — generate a baseline, then add rows as tests progress
  • Dataset growth simulation — model a platform growing from 1k → 100k users over time
  • Append-only seeding — add rows to a live dev database without truncating

Seed independence

Each call to generate_more uses a different seed (schema.seed + 1 by default). Pass an explicit seed for full reproducibility across calls.