詹戈
bulk_create
queryset方法,它在一个数据库查询中添加多个记录(高效的方法)。所以您的代码应该如下所示:
首先重写函数getexchangerates,这样就可以为所有货币获取一个dict,而不是为每个货币获取dict列表。
rates = {}
...
for rate_symbol in ['USD', 'GBP', 'HKD', 'AUD', 'JPY', 'SEK', 'NOK']:
try:
rates[rate_symbol] = rates_from_rdata[rate_symbol]
except KeyError:
logging.warning('rate for {} not found in rdata'.format(rate_symbol))
pass
return rates
然后迭代dict,创建模型实例,然后批量保存。
rates = getExchangeRates()
fixerio_rates = [Fixerio_rates(currency=currency, rate=rate)
for currency, rate in rates.items()]
Fixerio_rates.objects.bulk_create(fixerio_rates)