首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在dynamoDB中插入项目时,使用相同的变量仅在1种情况下获得RecursionError

为什么在dynamoDB中插入项目时,使用相同的变量仅在1种情况下获得RecursionError
EN

Stack Overflow用户
提问于 2021-01-21 15:26:35
回答 1查看 121关注 0票数 0

我在Python3和boto3中看到了一个非常奇怪的行为,那就是在dynamoDB中插入一个项目。

代码语言:javascript
运行
复制
# Assume that set_original() returns a dictionary
original = set_original()

# copy is an EXACT copy of original, but hardcoded.
copy = {..hardcoded "original" dictionary..}

我可以确认这两个字典是相同的,因为下面返回True:

代码语言:javascript
运行
复制
if copy == original:
    return True

现在,这是一个巨大的RecursionError: maximum recursion depth exceeded while calling a Python object失败了

代码语言:javascript
运行
复制
table.put_item(Item=original)

但它工作得很好,并成功地将数据插入到dynamodb中:

代码语言:javascript
运行
复制
table.put_item(Item=copy)

这是怎么回事呢?我检查了type()和dir(),它们基本上是彼此的副本,但只有一个无法插入,而另一个则不能。

EN

Stack Overflow用户

发布于 2021-01-22 10:50:24

虽然我不知道发生这种情况的确切原因,但我解决了以下问题:set_original()创建了一个字典,其中一个变量不是字符串,而是一个漂亮的汤串:<class 'bs4.element.NavigableString'>这对于python来说是可以的,但是对于dynamoDB来说就不是了。解决方案基本上是将所有这些NavigableString类型转换为str类型。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65822810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档