Open SaidiAli opened 4 years ago
Faker provides a plenty of localised generators, and it can be used as-is, no need to replicate functionality.
Here is how I implemented the Faker library with Flask-Seeder. I couldn't figure out a good way to get Faker to return a generator object so I was hoping there is a better way to do this, but this works.
from flask_seeder import Seeder, Faker as FlaskFaker, generator
from faker import Faker
from test_site.user.models import User
fake = Faker()
class FakerGenerator(generator.Generator):
def __init__(self, method, **kwargs):
super().__init__(**kwargs)
self._method = method
def generate(self):
return self._method()
class TestSeeder(Seeder):
def run(self):
user_faker = FlaskFaker(
cls=User,
init={
"username": FakerGenerator(fake.user_name),
"email": generator.Email(),
"password": FakerGenerator(fake.password)
}
)
User.query.delete()
for user in user_faker.create(5):
self.db.session.add(user)
I searched for some good database seeders for my flask app and I always ended considering this project but it failed to do the job too because apparently there is not enough generators, you need some more generators for email, date , address and many more. An inspiration can be picked from the faker project. I myself will consider to folk the repo and do some work.