Skip to main content

Generate realistic test data for your databases. Schema-aware, relationship-preserving, privacy-safe.

Project description

Seedbase

Seedbase

Generate realistic, relationship-preserving, privacy-safe test data for your databases, and pull it straight into your local or CI database.

Seedbase lives on seedba.se: you model (or import) a schema there, generate datasets, and use this package to pull them into Postgres, MySQL, SQLite and more. Schema-aware, foreign-key-correct, reproducible by seed.

Create a free account at seedba.se/register, no credit card. The free tier is enough to generate full, foreign-key-consistent datasets.

Install

pip install seedbase

Zero dependencies, pure Python (3.10+).

CLI quickstart

seedbase login                 # opens the browser, stores a token
seedbase init                  # creates .seedbase.json (project + target DB)
seedbase generate --seed 42    # trigger a generation on the platform
seedbase pull all              # write schema + data into your target DB

The CLI is pull-oriented: schema and datasets live on the platform, you pull them into your database. Other commands: projects, generations, connections, pull schema|data|subset, mask, db-push, diff, export config, import config.

Python SDK

from seedbase import SeedbaseClient

client = SeedbaseClient(token="dr_sk_...")          # or from ~/.seedbase/config.json
gen = client.generate(project_id, seed=42, wait=True)
data = client.download(gen["id"], fmt="sql")

pytest fixtures

Seedbase ships a pytest plugin, so realistic, foreign-key-consistent test data is one fixture away. pytest fixtures are dependency injection, so this is your test data, injected.

Inject a populated test database (the headline). The target database needs its schema already migrated; SeedBase fills it with FK-consistent data and cleans up after the session. Needs SQLAlchemy 2.0 (pip install "seedbase[database]"):

import sqlalchemy

def test_pagination(seeded_database):
    # seeded_database is a live connection to a DB full of realistic data
    rows = seeded_database.execute(
        sqlalchemy.text("SELECT email FROM users LIMIT 5")
    ).fetchall()
    assert all("@" in email for (email,) in rows)

Inject the rows directly (no database, no driver):

def test_user_shape(seeded_rows):
    # {table_name: [row_dict, ...]}, in foreign-key-safe order
    assert seeded_rows["users"][0]["email"]

Raw bytes (SQL/CSV/JSON dump) if you want to load it yourself:

def test_dump(seeded_data):
    assert seeded_data

Deterministic per seed, so the same seed gives the same data and your tests are reproducible. Configure via env (SEEDBASE_TOKEN, SEEDBASE_PROJECT, SEEDBASE_SEED, SEEDBASE_TEST_DATABASE_URL) or pytest.ini (seedbase_project, seedbase_seed, seedbase_rows, seedbase_database_url). All fixtures skip with a helpful message if the project or credentials are missing, so they never break a suite that has not configured them.

Links

MIT licensed.

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

seedbase-0.2.1.tar.gz (34.6 kB view details)

Uploaded Source

Built Distribution

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

seedbase-0.2.1-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

Details for the file seedbase-0.2.1.tar.gz.

File metadata

  • Download URL: seedbase-0.2.1.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for seedbase-0.2.1.tar.gz
Algorithm Hash digest
SHA256 7cea02be2d33da2a09a4f0490119929d71727c156990c813da0950d365401532
MD5 1313a7e615d2b376874533c180edde83
BLAKE2b-256 9380cae321ae6c8a57d7574b7c3a9a9b3a2b8c2f9cf5d39c97c01287ae99b117

See more details on using hashes here.

Provenance

The following attestation bundles were made for seedbase-0.2.1.tar.gz:

Publisher: publish.yml on marcelglaeser/seedbase-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seedbase-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: seedbase-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for seedbase-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f0af14b98886b23cfd92b27096cc6ef3be26ef79bc1710b9310c7bbdd495929a
MD5 986adb10801f467b13303aff5a4878c1
BLAKE2b-256 97b578ed4ef7d5bc406734bed255f5b5601709a336e68494838f0aded0e4a081

See more details on using hashes here.

Provenance

The following attestation bundles were made for seedbase-0.2.1-py3-none-any.whl:

Publisher: publish.yml on marcelglaeser/seedbase-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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