将静态数据添加到现有的 django 应用程序 -->迁移?夹具?命令?



我们有一个包含两个列的表:城市和县。使用 PostgreSQL 9.1

我们发现那里有很多失踪的城市。所以我得到了一个CSV文件,其中包含大量此类城市/县条目。

将此数据添加到正在运行的应用的最佳方法是什么?

  • 我知道迁移应该是最适合架构更改的。这里的情况并非如此。
  • 乍一看,夹具似乎是最好的选择,但夹具没有逻辑,它只是json。我需要保持现有数据不变,因为它是由其他表中的 id 引用的。当然不欢迎重复。
  • 在我看来,最干净的方法是一个命令,我可以在其中加载 csv 文件并逐个条目处理条目,只有在找不到城市元素时才添加一个新文件。

您可以使用 get_or_create() 通过管理命令或南方数据迁移执行所需的操作。下面是管理命令的示例:

import csv
from django.core.management.base import BaseCommand, CommandError
from your_app.models import YourModel

class Command(BaseCommand):
    def handle(self, *args, **options):
        with open('your-file.csv', 'rb') as csv_file:
        for row in csv_file:
            # you would need to know the column index to access as
            # csv reader returns a simple List for each row
            obj, created = YourModel.objects.get_or_create(field=row[0],
                defaults={'field': row[0]})

您可以进行南部数据迁移,这将通过ORM导入您的数据。你可以在那里做任何逻辑。例如,通过get_or_create()检查重复项

最新更新