我们有一个包含两个列的表:城市和县。使用 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()
检查重复项