You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
894 B
Markdown
54 lines
894 B
Markdown
# 种子数据
|
|
|
|
iTi-Flask 不提供框架 seed。
|
|
业务 seed 由业务项目维护。
|
|
|
|
## 规则
|
|
|
|
seed 代码必须:
|
|
|
|
- 幂等。
|
|
- 可重复执行。
|
|
- 按唯一键 upsert。
|
|
- 不删除用户数据。
|
|
- 不替代 migration 修改表结构。
|
|
|
|
seed 适合写:
|
|
|
|
- 业务默认配置。
|
|
- 业务字典。
|
|
- 演示数据。
|
|
|
|
seed 不适合写:
|
|
|
|
- 框架内部数据。
|
|
- 其它包的数据。
|
|
- 运行时数据库快照。
|
|
|
|
## 业务命令
|
|
|
|
业务项目可以在模块中注册自己的 CLI 命令:
|
|
|
|
```python
|
|
import click
|
|
|
|
|
|
class ExampleModule:
|
|
name = "example"
|
|
|
|
def register_commands(self, app):
|
|
@click.command("seed-example")
|
|
def seed_example():
|
|
click.echo("seeded")
|
|
|
|
app.cli.add_command(seed_example)
|
|
```
|
|
|
|
执行:
|
|
|
|
```bash
|
|
uv run python -m flask --app app.py seed-example
|
|
```
|
|
|
|
需要系统业务 seed 时,查看 `iTi-System` 文档。
|