1

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

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

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

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

2 回答 2

3

您可以使用get_or_create()通过管理命令或通过 South Data Migration来完成所需的工作。以下是管理命令的示例:

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]})
于 2013-10-25T17:26:13.100 回答
2

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

于 2013-10-25T17:39:00.777 回答