本文為大家分享了python Django批量導入不重復數據的實現代碼,供大家參考,具體內容如下
程序如下:
#coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") '''Django 版本大于等于1.7的時候,需要加上下面兩句import djangodjango.setup()否則會拋出錯誤 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.'''import djangoimport datetimeif django.VERSION >= (1, 7):#自動判斷版本 django.setup()from keywork.models import DevData f = open('cs.csv')WorkList = []next(f) #將文件標記移到下一行x = y = 0for line in f: parts = line.replace('"','') #將字典中的"替換空 parts = parts.split(',') #按;對字符串進行切片 if DevData.objects.filter(serv_id = parts[0],day_id=parts[24]).exists(): x = x + 1 else: y = y + 1 WorkList.append(DevData(serv_id=parts[0], serv_state_name=parts[1], acc_nbr=parts[2], user_name=parts[3], acct_code=parts[4], product_id=parts[5], mkt_chnl_name=parts[6], mkt_chnl_id=parts[7],mkt_region_name=parts[8], mkt_region_id=parts[9],mkt_grid_name=parts[10], sale_man=parts[11],sale_outlets_cd1_name=parts[12], completed_time=parts[13],remove_data=parts[14], user_flag=parts[15], pro_flag=parts[16], service_offer_id=parts[17],service_offer_name=parts[18], finish_time=parts[19],staff_name=parts[20], staff_code=parts[21],org_name=parts[22],prod_offer_name=parts[23],day_id=parts[24] ))f.close() DevData.objects.bulk_create(WorkList)print "重復數據"+str(x)+"條,成功導入數據"+str(y)+"條"
本文主要運用模型中exists()判斷導入數據和數據庫是否重復,如果不重復就用bulk_create批量導入數據庫!
以上就是本文的全部內容,希望對大家的學習有所幫助。