taibai_shopping/create_sample_categories.py
2025-07-04 19:07:35 +08:00

112 lines
4.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
创建示例分类数据
"""
import sys
import os
# 添加项目路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app import create_app
from app.models.product import Category
from config.database import db
def create_sample_categories():
"""创建示例分类数据"""
app = create_app()
with app.app_context():
print("=== 创建示例分类数据 ===\n")
# 检查是否已有分类
if Category.query.count() > 0:
print("⚠️ 数据库中已有分类数据,是否继续添加?(y/N): ", end="")
if input().strip().lower() != 'y':
return
# 创建示例分类数据
categories_data = [
# 一级分类
{'name': '数码电子', 'parent_id': 0, 'level': 1, 'sort_order': 1},
{'name': '服装鞋帽', 'parent_id': 0, 'level': 1, 'sort_order': 2},
{'name': '食品饮料', 'parent_id': 0, 'level': 1, 'sort_order': 3},
{'name': '家居生活', 'parent_id': 0, 'level': 1, 'sort_order': 4},
{'name': '图书文具', 'parent_id': 0, 'level': 1, 'sort_order': 5},
]
# 创建一级分类
level1_categories = {}
for cat_data in categories_data:
category = Category(**cat_data)
db.session.add(category)
db.session.flush() # 获取ID
level1_categories[cat_data['name']] = category.id
print(f"✅ 创建一级分类: {cat_data['name']}")
# 二级分类数据
level2_data = [
# 数码电子子分类
{'name': '手机通讯', 'parent_id': level1_categories['数码电子'], 'level': 2, 'sort_order': 1},
{'name': '电脑办公', 'parent_id': level1_categories['数码电子'], 'level': 2, 'sort_order': 2},
{'name': '相机摄像', 'parent_id': level1_categories['数码电子'], 'level': 2, 'sort_order': 3},
# 服装鞋帽子分类
{'name': '男装', 'parent_id': level1_categories['服装鞋帽'], 'level': 2, 'sort_order': 1},
{'name': '女装', 'parent_id': level1_categories['服装鞋帽'], 'level': 2, 'sort_order': 2},
{'name': '运动鞋', 'parent_id': level1_categories['服装鞋帽'], 'level': 2, 'sort_order': 3},
# 食品饮料子分类
{'name': '零食小食', 'parent_id': level1_categories['食品饮料'], 'level': 2, 'sort_order': 1},
{'name': '饮料冲调', 'parent_id': level1_categories['食品饮料'], 'level': 2, 'sort_order': 2},
{'name': '生鲜食品', 'parent_id': level1_categories['食品饮料'], 'level': 2, 'sort_order': 3},
]
# 创建二级分类
level2_categories = {}
for cat_data in level2_data:
category = Category(**cat_data)
db.session.add(category)
db.session.flush()
level2_categories[cat_data['name']] = category.id
print(f" ├─ 创建二级分类: {cat_data['name']}")
# 三级分类数据
level3_data = [
# 手机通讯子分类
{'name': '智能手机', 'parent_id': level2_categories['手机通讯'], 'level': 3, 'sort_order': 1},
{'name': '手机配件', 'parent_id': level2_categories['手机通讯'], 'level': 3, 'sort_order': 2},
# 男装子分类
{'name': 'T恤', 'parent_id': level2_categories['男装'], 'level': 3, 'sort_order': 1},
{'name': '衬衫', 'parent_id': level2_categories['男装'], 'level': 3, 'sort_order': 2},
{'name': '牛仔裤', 'parent_id': level2_categories['男装'], 'level': 3, 'sort_order': 3},
# 零食小食子分类
{'name': '饼干糕点', 'parent_id': level2_categories['零食小食'], 'level': 3, 'sort_order': 1},
{'name': '坚果炒货', 'parent_id': level2_categories['零食小食'], 'level': 3, 'sort_order': 2},
]
# 创建三级分类
for cat_data in level3_data:
category = Category(**cat_data)
db.session.add(category)
print(f" └─ 创建三级分类: {cat_data['name']}")
# 提交数据
db.session.commit()
print(f"\n✅ 示例分类数据创建完成!")
print(f"一级分类: {len(categories_data)}")
print(f"二级分类: {len(level2_data)}")
print(f"三级分类: {len(level3_data)}")
print(f"总计: {len(categories_data) + len(level2_data) + len(level3_data)} 个分类")
print(f"\n访问地址: http://localhost:5000/admin/products/categories")
if __name__ == '__main__':
create_sample_categories()