Skip to content

Commit 1d67615

Browse files
Populate database with faker
1 parent ef103b9 commit 1d67615

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

populate_db.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from faker import Faker
2+
from app import app, db
3+
from app.models import Category, Subcategory, Product
4+
import random
5+
6+
7+
fake = Faker()
8+
9+
def create_categories(num=5):
10+
categories = []
11+
for _ in range(num):
12+
category = Category(name=fake.unique.company())
13+
categories.append(category)
14+
15+
db.session.add_all(categories)
16+
return categories
17+
18+
19+
def create_subcategories(num=10):
20+
subcategories = []
21+
for _ in range(num):
22+
subcategory = Subcategory(name=fake.unique.city())
23+
subcategories.append(subcategory)
24+
25+
db.session.add_all(subcategories)
26+
return subcategories
27+
28+
29+
def create_products(num=50):
30+
products = []
31+
for _ in range(num):
32+
product = Product(name=fake.unique.catch_phrase(), description=fake.text(max_nb_chars=500))
33+
products.append(product)
34+
35+
db.session.add_all(products)
36+
return products
37+
38+
39+
def create_relationships(categories, subcategories, products, max_category_association=3, max_subcategory_association=5):
40+
for subcategory in subcategories:
41+
num_categories = random.randint(1, max_category_association)
42+
associated_categories = random.sample(categories, num_categories)
43+
subcategory.categories.extend(associated_categories)
44+
45+
for product in products:
46+
num_subcategories = random.randint(1, max_subcategory_association)
47+
associated_subcategories = random.sample(subcategories, num_subcategories)
48+
product.subcategories.extend(associated_subcategories)
49+
50+
51+
def main():
52+
with app.app_context():
53+
db.drop_all()
54+
db.create_all()
55+
56+
categories = create_categories(50)
57+
subcategories = create_subcategories(100)
58+
products = create_products(10000)
59+
60+
create_relationships(categories, subcategories, products)
61+
62+
db.session.commit()
63+
print("db populated!")
64+
65+
66+
if __name__ == "__main__":
67+
main()

0 commit comments

Comments
 (0)