【问题标题】: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 将创建、迁移、填充数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2015-04-09
      • 2011-11-20
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      相关资源
      最近更新 更多