UsageΒΆ
Value generation consists in the following steps:
Warning
If you plan on using wrapping Django models, you must call the fillmydb.initialize_django()
function
before importing your models.
Wrap your models in a
fillmydb.ModelWrapper
like this:wrapper = ModelWrapper(MyFirstModel, MySecondModel, ...)
Specify how the fields should look like using
fillmydb.FieldSpec
instances:wrapper[MyFirstModel].first_field = FieldSpec(generate_func1) wrapper[MyFirstModel].second_field = FieldSpec(generate_func2) ... wrapper[MySecondModel].first_field = FieldSpec(generate_for_model2) wrapper[MySecondModel].second_field = FieldSpec(generate_for_model2_again) ...
Generate how many instances you need directly into your database:
wrapper.generate(1000, 2000, ...)
A complete example
Lets assume we have the following peewee models:
class User(peewee.Model):
name = peewee.CharField()
username = peewee.CharField()
password_hash = peewee.BlobField()
email = peewee.CharField()
visits = peewee.IntegerField()
description = peewee.CharField()
class Post(peewee.Model):
title = peewee.CharField()
text = peewee.CharField()
by_user = peewee.ForeignKeyField(User)
class Like(peewee.Model):
by_user = peewee.ForeignKeyField(User)
to_post = peewee.ForeignKeyField(Post)
Now let’s generate our instances:
wrapper = ModelWrapper(User, Post, Like) # order doesn't matter
factory = faker.Factory.create() # we use the fake-factory module generate nice-looking data
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(faker.sentence)
wrapper[Post].text = FieldSpec(factory.text)
wrapper.generate(100, 200, 300)
Now we have 100 fresh instances of User
, 200 instances of Post
and 300 instances of Like