如果你导入数据过多,导入时出错了,或者你手动停止了,导入了一部分,还有一部分没有导入。或者你再次运行上面的命令,你会发现数据重复了,怎么办呢?
django.db.models 中还有一个函数叫 get_or_create() 有就获取过来,没有就创建,用它可以避免重复,但是速度可以会慢些,因为要先尝试获取,看看有没有
只要把上面的
models.PangleData.objects.create(ad_slot_id=ad_slot_id, ad_slot_type=ad_slot_type, app_id=app_id, app_name=app_name, bidding_type=bidding_type, click=click, click_rate=click_rate, code_name=code_name, currency=currency, date=date, ecpm=ecpm, fill_rate=fill_rate, media_m_ssr=media_m_ssr, media_name=media_name, os=os, package_name=package_name,region=region, request=request, P_return=P_return, revenue=revenue, show=show, time_zone=time_zone, use_mediation=use_mediation,)
换成下边这种
models.PangleData.objects.get_or_create(ad_slot_id=ad_slot_id, ad_slot_type=ad_slot_type, app_id=app_id, app_name=app_name, bidding_type=bidding_type, click=click, click_rate=click_rate, code_name=code_name, currency=currency, date=date, ecpm=ecpm, fill_rate=fill_rate, media_m_ssr=media_m_ssr, media_name=media_name, os=os, package_name=package_name,region=region, request=request, P_return=P_return, revenue=revenue, show=show, time_zone=time_zone, use_mediation=use_mediation,)
就可以避免导入重复数据了;
返回值是(PangleDataObject, True/False) 新建时返回 True, 已经存在时返回 False。