我有一个CSV文件,可以批量更新记录。
CSV格式:
id amount
4 100
5 200
6 five --> error
7 400
如果CSV数据有错误,我想回滚到数据的先前状态。
就像上面的CSV id 6 一样,有一个字符串,并且我在数据库中的列是整数,因此将引发异常。
views.py
from django.db import transaction
lines = csv.reader(my_csv.csv)
for line in lines:
try:
MyModel.objects.filter(id=line[0]).update(amount=line[1])
except:
transaction.rollback()
break
例外
("'%(value)s' value must be a decimal number.", 'invalid', {'value': 'five'})
[]
我们的代码因 id 6 新数据正在更新而异常。