通过django中的fixture或json数据更新DB数据?

时间:2013-06-12 10:26:10

标签: django fixtures

我知道我可以使用灯具来提供初始数据。

我可以使用灯具(或类似的* .json文件)来更新现有数据库吗?

具体来说,我可以通过指定pk=null并使用自然键来更新现有行吗?

1 个答案:

答案 0 :(得分:4)

是的,您可以使用loaddata

./manage.py loaddata path/to/fixture/some_new_data.json

BUT:

  • 不要调用您的新数据initial_data.json,否则每次syncdb或运行South migraton时都会重新加载,并且会清除自加载灯具后所做的任何更改。 (如前所述[{3}})
  • 与上述相关,通过灯具加载数据可能是一种脆弱的做事方式,除非您确定在编写灯具时新数据不会到达。如果是这样,您可能会在数据库中发生冲突以及失败或“错误”数据。

根据数据的性质,最好使用page。当您为大量记录设置几个值时(例如,更改字段的默认值或使用数据填充空字段),数据迁移可能会很好。数据迁移还允许您通过Python将一些检查/逻辑应用于事物,以便您可以定位更新的记录,或以不同方式更新不同的记录,而不是编写大量的灯具。但是,如果你想加载大量的新记录,那么夹具会更有意义。