← ClaudeAtlas

database-seedinglisted

【数据填充】设计和实现数据库种子数据(Seed Data),包含测试数据生成、数据工厂、环境初始化、数据快照。 触发时机: - 用户要求"生成测试数据"、"数据填充"、"数据库初始化" - 开发环境需要模拟数据 - 演示环境需要展示数据 支持多种数据库和数据生成策略。
afine907/skills · ★ 0 · Data & Documents · score 75
Install: claude install-skill afine907/skills
# Database Seeding — 数据库填充技能 设计和实现数据库种子数据,支持开发、测试、演示环境。 ## Goal 设计和实现数据库种子数据(Seed Data),包含测试数据生成、数据工厂、环境初始化、数据快照 ## Trigger - 用户要求"生成测试数据"、"数据填充"、"数据库初始化" - 开发环境需要模拟数据 - 演示环境需要展示数据 ## 填充策略 | 策略 | 适用场景 | 特点 | |------|----------|------| | 固定数据 | 基础配置、字典表 | 不变、可预测 | | 随机数据 | 测试、开发 | 大量、多样 | | 真实数据 | 演示、验收 | 接近生产 | | 快照恢复 | 测试隔离 | 快速重置 | ## Python + Faker 实现 ### 数据工厂 ```python import factory from faker import Faker from datetime import datetime, timedelta import random fake = Faker('zh_CN') class UserFactory(factory.Factory): class Meta: model = dict id = factory.Sequence(lambda n: n + 1) name = factory.LazyFunction(fake.name) email = factory.LazyFunction(fake.email) phone = factory.LazyFunction(fake.phone_number) avatar = factory.LazyFunction(fake.image_url) role = factory.LazyFunction(lambda: random.choice(['admin', 'user', 'guest'])) status = factory.LazyFunction(lambda: random.choice(['active', 'inactive'])) created_at = factory.LazyFunction(lambda: fake.date_time_between(start_date='-1y')) class OrderFactory(factory.Factory): class Meta: model = dict id = factory.Sequence(lambda n: n + 1) user_id = factory.LazyFunction(lambda: random.randint(1, 100)) product = factory.LazyFunction(lambda: random.choice(['商品A', '商品B', '商品C'])) amount = factory.LazyFunction(lambda: round(random.uniform(10, 1000), 2)) status = factory.L