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.0.tar.gz (34.5 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.0-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: seedbase-0.2.0.tar.gz
  • Upload date:
  • Size: 34.5 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.0.tar.gz
Algorithm Hash digest
SHA256 b3103318e3c36310d5026d0d559b4f9804496353ec0bcd07ce63111b24864115
MD5 2190515bffe9cbcecea5bed34c31f7f5
BLAKE2b-256 85cd72c8b1722bede9c99151118305befba174812b49c7cf24fc830cf979d4c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for seedbase-0.2.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: seedbase-0.2.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ebf329bbf3db84ea2b6ae80af6b4b758f17cc3ec6bea85e6df1f193ce7c79c1
MD5 ca4324d6c9b02bac0f9bdc3832daa1e8
BLAKE2b-256 4774d0f685386d466fdeb5090a8f24e9714633c83a29a40f8d30c59951c4fe42

See more details on using hashes here.

Provenance

The following attestation bundles were made for seedbase-0.2.0-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