gpt4 book ai didi

python - AWS BotoCore 错误 - AttributeValue 不能包含空字符串

转载 作者:行者123 更新时间:2023-11-28 22:25:38 29 4
gpt4 key购买 nike

我正在尝试用旧事件存储中的数据填充 DynamoDB 数据库由 PostgreSQL 数据库组成。在运行完大部分数据库条目后,在尝试调用 put_item 函数时抛出此错误。

botocore.exceptions.ClientError:-

An error occurred (ValidationException) when calling the PutItem operation: One or more parameter values were invalid: An AttributeValue may not contain an empty string

我决定重新运行代码,并通过在插入之前转储所有表属性来查看发生了什么。

我可以看到唯一的“空字符串”在字典的 answer_string 属性中,称为 details,见下文:-

Importing event type 5 completed by user: 1933
1933 5 {'answer': {'difficulty': 1, 'answer_string': ''}, 'card_id': n
'13448', 'review_id': '153339', 'time_spent': 2431}
62 153339
2017-01-18 00:46:48.373009+00:00 2017-01-18 00:46:48.364217+00:00

我很确定这是导致抛出错误的原因,因为其他表属性都不正确。

我的问题是 details 字典可以来自几十个不同的位置,每个 details 字典可以有不同的属性 - 带有 answer_string 的那个> 属性只是许多可能的字典配置之一。我不可能检查字典的所有可能配置并验证它们都没有空字符串。

有没有一种方法可以对字典进行一次全面检查,看看其中是否有任何一部分是空的?

最佳答案

或者,如果您想用 None 值替换所有空字符串:

def removeEmptyString(dic):
for e in dic:
if isinstance(dic[e], dict):
dic[e] = removeEmptyString(dic[e])
if (isinstance(dic[e], str) and dic[e] == ""):
dic[e] = None
if isinstance(dic[e], list):
for entry in dic[e]:
removeEmptyString(entry)
return dic

dictionaryWithEmptyStringsReplacedWithNone = removeEmptyString(dicrionaryWithEmptyStrings)

它远非完美,但它确实有效。

关于python - AWS BotoCore 错误 - AttributeValue 不能包含空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45422343/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com