Skip to main content

fillmydb

Fill your database with mocked instances.

Wrap you ORM model into a ModelWrapper, specify how your fields should look like and then generate how many instances you want of each model.

Installation

  • pip install fillmydb[peewee] if you plan to use it with peewee models

  • pip install fillmydb[django] if you plan to use it with djanog models (not implemented yet)

  • pip install fillmydb[sqlalchemy] if you plan to use it with sqlalchemy models (not implemented yet)

Usage with fake-factory

Generating instances for a single model:

import faker

factory = faker.Factory.create()

wrapper = ModelWrapper(TestModel)

wrapper[TestModel].client_name = FieldSpec(factory.name)
wrapper[TestModel].description = FieldSpec(factory.text)
wrapper[TestModel].password_hash = FieldSpec(factory.binary, length=25)
wrapper[TestModel].email = FieldSpec(factory.email)
wrapper[TestModel].visits = FieldSpec(factory.pyint)

item = wrapper.generate(100)

Generating instances for multipe models:

from tests.models import User, Post, Like
import faker

factory = faker.Factory.create()

wrapper = ModelWrapper(User, Like, Post)

wrapper[User].name = FieldSpec(factory.name)
wrapper[User].username = FieldSpec(factory.user_name)
wrapper[User].description = FieldSpec(factory.text)
wrapper[User].password_hash = FieldSpec(factory.binary, length=25)
wrapper[User].email = FieldSpec(factory.email)
wrapper[User].visits = FieldSpec(factory.pyint)

wrapper[Post].title = FieldSpec(lambda _: "test", 1)
wrapper[Post].text = FieldSpec(factory.text)

# generating 10 users, 100 likes and 20 posts
wrapper.generate(10, 100, 20)

General workflow

Pseudo-code:

initial_to_order_queue()
while models_to_process():
    model = get_next_model()

    if model.has_unresolved_dependency():
        push_back_to_queue(model)

    # process model
    for _ in range(number_of_instances):
        for field in model.fields():
            # resolve_field(field)
            if field == ForeignKey:
                field = get_random_ref_model_instance()
            else:
                field = resolve_normal()
    mark_as_processed(model)

Release files for fillmydb 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fillmydb 0.1.0
File Size Uploaded
fillmydb-0.1.0.zip 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fillmydb 0.1.0
File Interpreter ABI Platform
fillmydb-0.1.0.win-amd64.zip Details

Total release size: 31.7 kB

Release files / fillmydb-0.1.0.zip

Download URL fillmydb-0.1.0.zip
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d3e2341c71431f280b632bf9de85289e6e6f0583e431f4a014914c1c28615fc0
BLAKE2b-256 checksum
How to use checksums
dc8504c983b8fd8d98b2339dc108bf7bae7e856a606fb6e9f463a035e70950fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / fillmydb-0.1.0.win-amd64.zip

Download URL fillmydb-0.1.0.win-amd64.zip
Size 22.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f9422eb5c86c50b53fa9bfebac9341dda9ad633e21fa6c675f3d6a6a31df4742
BLAKE2b-256 checksum
How to use checksums
5bbcf855b377bbf969b4a857ac48e33f67d1270f80b0e3f1f8d6ef3b0879b581
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page