【发布时间】:2018-06-15 04:09:18
【问题描述】:
我正在尝试在 django 中执行 Model.objects.bulk_create(bulk_objects),我有时会期待 IntegrityError,但我想获取导致异常的对象详细信息。
try:
# bulk_objects contains ~70k items
Auction.objects.bulk_create(bulk_objects)
except IntegrityError as e:
print(str(e.__cause__))
msg = str(e.__cause__)
match = re.search('(?!\()\d+(?=\))', msg)
print(match.group(0)) # prints 123865 in this case
这会引发异常
insert or update on table "auction_table" violates foreign key constraint"my_constraint"
DETAIL: Key (item_id)=(123865) is not present in table "item_table".
这很好,我希望这样,我想获取导致异常的 item_id,在本例中为 123865 的 item_id。
有没有一种方法可以在不对字符串执行一些正则表达式或迭代 bulk_objects 的情况下做到这一点?
只是希望直接从错误中得到它,否则我将继续使用正则表达式方法
【问题讨论】:
-
没有办法直接获取key
标签: python django bulkinsert