【问题标题】:Advice on Pre-Populating PostgreSQL Table with Ecto使用 Ecto 预填充 PostgreSQL 表的建议
【发布时间】:2020-07-21 12:25:08
【问题描述】:
TL;DR 使用 Ecto 时,我应该在哪里(在代码中)加载数据以在创建小表后预填充它?
我正在学习 Elixir、Phoenix 和 Ecto。我的架构中有一个表来定义可配置选项的列表。我想在创建表时使用最少的选项集预先填充此表。
在我看来,_create_table.exs 脚本是执行此操作的地方,因为这是创建表的地方。我正在查看一个执行{} 块,但这似乎很笨拙。
代码中是否有更好的地方来完成预填充新表?
【问题讨论】:
标签:
postgresql
elixir
ecto
【解决方案1】:
在Phoenix中,填充数据库的常用方法是使用priv/repo/seeds.exs它生成的mix run任务:
mix run priv/repo/seeds.exs
但这种方法实际上对任何 Ecto 项目都适用。只需创建文件,将种子代码放在那里,然后将您的 mix.exs aliases 部分更新为
defp aliases do
[
"ecto.setup": [
"ecto.create",
"ecto.migrate",
"run priv/repo/seeds.exs"
],
...
]
现在mix ecto.setup 将创建、迁移、和填充数据库。