Tricks and Tips¶
Working with ORM¶
If you need to generate data and import it into a database we strongly recommend generating data in chunks rather than 600k at once. Keep in mind the possible limitations of databases, ORM, etc. The smaller the generated data chunks are, the faster the process will go. Below you can see an abstract example of a Django command which uses Mimesis to bootstrap database.
Good:
~ python manage.py fill_fake_db --count=1000 --locale=de
Very bad:
~ python manage.py fill_fake_db --count=600000 --locale=de
For ORM integration, you might find it useful to use mimesis-factory.
Dummy API Endpoints¶
You can create dummy API endpoints when you have not data, but need them and know the structure of the endpoint’s response.
Let’s define the structure of the dummy response.
dummy_endpoints.py:
from mimesis.schema import Field, Schema
from mimesis.locales import Locale
from mimesis.enums import Gender
_ = Field(Locale.EN)
dummy_users = Schema(
lambda: {
'id': _('uuid'),
'name': _('name', gender=Gender.MALE),
'surname': _('surname', gender=Gender.MALE),
'email': _('email'),
'age': _('age'),
'username': _('username', template='UU_d'),
'occupation': _('occupation'),
"address": {
"street": _('street_name'),
"city": _('city'),
"zipcode": _('zip_code'),
},
}
)
Now, you can return unique response with JSON for each request.
Django Dummy API Endpoint¶
Basically you need just create simple view, which returns JsonResponse:
from dummy_endpoints import dummy_users
def users(request):
dummy_data = dummy_users.create(iterations=1)
return JsonResponse(dummy_data)
For DRF the same, but in terms of DRF:
from dummy_endpoints import dummy_users
class Users(APIView):
def get(self, request):
data = dummy_users.create(iterations=1)
return Response(data)
Response:
[
{
"id": "a46313ab-e218-41cb-deee-b9afd755a4dd",
"name": "Wally",
"surname": "Stein",
"email": "artiller1855@yahoo.com",
"age": 51,
"username": "SystemicZeuzera_1985",
"occupation": "Travel Courier",
"address": {
"street": "Lessing",
"city": "Urbandale",
"zipcode": "03983"
}
},
]
Flask Dummy API Endpoint¶
The same way as above:
from dummy_endpoints import dummy_users
@app.route('/users')
def users():
dummy_data = dummy_users.create(iterations=1)
return jsonify(dummy_data)
Response:
[
{
"id": "f2b326e3-4ce7-1ae9-9e6d-34a28fb70106",
"name": "Johnny",
"surname": "Waller",
"email": "vault1907@live.com",
"age": 47,
"username": "CaterpillarsSummational_1995",
"occupation": "Scrap Dealer",
"address": {
"street": "Tonquin",
"city": "Little Elm",
"zipcode": "30328"
}
},
]
Integration with third-party libraries¶
mimesis-factory - Integration with
factory_boy
.pytest-mimesis - is a pytest plugin that provides pytest fixtures for Mimesis providers.