我在Python3和boto3中看到了一个非常奇怪的行为,那就是在dynamoDB中插入一个项目。
# Assume that set_original() returns a dictionary
original = set_original()
# copy is an EXACT copy of original, but hardcoded.
copy = {..hardcoded "original" dictionary..}我可以确认这两个字典是相同的,因为下面返回True:
if copy == original:
return True现在,这是一个巨大的RecursionError: maximum recursion depth exceeded while calling a Python object失败了
table.put_item(Item=original)但它工作得很好,并成功地将数据插入到dynamodb中:
table.put_item(Item=copy)这是怎么回事呢?我检查了type()和dir(),它们基本上是彼此的副本,但只有一个无法插入,而另一个则不能。
发布于 2021-01-22 10:50:24
虽然我不知道发生这种情况的确切原因,但我解决了以下问题:set_original()创建了一个字典,其中一个变量不是字符串,而是一个漂亮的汤串:<class 'bs4.element.NavigableString'>这对于python来说是可以的,但是对于dynamoDB来说就不是了。解决方案基本上是将所有这些NavigableString类型转换为str类型。
https://stackoverflow.com/questions/65822810
复制相似问题