Seeding
Seeder vs. HybridSeeder
Features & Options |
Seeder |
HybridSeeder |
---|---|---|
Support |
✔️ |
✔️ |
Support |
❌ |
✔️ |
Optional argument |
✔️ |
❌ |
When to use HybridSeeder and ‘filter’ key field?
Assuming that Child(age=5)
exists in the database or session,
then we should use filter
instead of data
key.
The values from filter
will query from the database or session,
and get the result then assign it to the Parent.child
from sqlalchemyseed import HybridSeeder
from db import session
data = {
"model": "models.Parent",
"data": {
"!child": { # '!' is the reference prefix
"model": "models.Child",
"filter": {
"age": 5
}
}
}
}
# When seeding instances that has 'filter' key,
# then use HybridSeeder, otherwise use Seeder.
seeder = HybridSeeder(session, ref_prefix='!')
seeder.seed(data)
session.commit() # or seeder.sesssion.commit()
Note
filter
key is dependent to HybridSeeder in order to perform correctly.