当前位置: 首页 > 知识库问答 >
问题:

与DynamoDB库Boto3的事务

澹台景辉
2023-03-14

是否有任何html" target="_blank">方法可以使用Boto3(Python库)执行ACID事务?

我想将一项写入多个表,并确保写入操作已应用于所有表,否则将回滚。我阅读了Boto3文档,没有看到任何关于事务或ACID操作的内容。

我查了这个图书馆:http://dynamodb-mapper.readthedocs.io/en/latest/

我已经签出了代码,它似乎正在使用旧的boto库,而且似乎不再受支持。

我知道有一个AWS事务解决方案:https://aws.amazon.com/blogs/aws/dynamodb-transaction-library/

这是使用Java代码完成的。我想知道你们中是否有人能够使用Boto3在DynamoDB上执行事务?

谢谢

共有3个答案

孔鸿云
2023-03-14

这是一个更新的文档https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.transact_write_items

您可以在同一页面中找到事务\u获取\u项目

王飞虎
2023-03-14

对于搜索交易的人来说,这一点现在已经改变了。AWS最近引入了DynamoDB事务。Boto将被更新以处理这些问题。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transactions.html

薛淳
2023-03-14

boto3库不支持您引用的Java客户端库所支持的跨表事务。DynamoDB本身并不支持此功能,因此像这样的事务必须在客户端层实现,并且您的表在很大程度上被设计为支持客户端软件所需的字段。

当然可以实现类似于Java的Python事务客户端,但据我所知,没有人实现过。

 类似资料:
  • 尽管Amazon提供了关于如何使用Java、PHP和.Net连接到dynamoDB local的文档,但没有描述如何使用Python连接到localhost:8000。web上的现有文档指向在boto.dynamodb2.layer1中使用dynamoDB连接方法,但这会在使用boto3协议管理dynamoDB的实时和测试环境之间造成不兼容。 在boto3中,您可以使用以下构造函数和设置到环境中的

  • 我们正在使用boto3为我们的DynamoDB,我们需要做一个完整的扫描我们的表,以便能够做到这一点,基于其他帖子,我们需要做一个分页。但是,我们无法找到分页的工作示例。这是我们所做的。 我们不知道如何将esk作为下一个查询的ExclusiveStartKey。ExclusiveStartkey参数的预期值应该是多少?我们在DynamoDB还是新手,还有很多东西需要学习,包括这个。谢谢

  • 在文档之后,我尝试创建一个update语句,该语句将更新或添加dynamodb表中的一个属性(如果不存在)。 我在试这个 我得到的错误是: 如果有人做了类似于我正在努力实现的事情,请分享例子。

  • 这更像是一个概念澄清。我可以使用Boto3通过使用上一个响应的LastEvaluatedKey重复查询找到实际计数。 我想计算符合dynamoDb中特定条件的项目。我使用的是“select=count”,根据文档[1],它应该只返回匹配项的计数,并且我假设响应不会分页。 计数-返回匹配项的数量,而不是匹配项本身。 当我通过AWS-cli尝试时,我的假设似乎是正确的(就像文档[1]中的其他api样本

  • 这是我的DynamoDB JSON 我需要删除从数据库所以我累了这个... 我得到以下错误... botocore.exceptions.ClientError:调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:语法错误;令牌:“=”,靠近:“跟踪的用户=:跟踪的用户”

  • 我正在尝试使用boto3从DynamoDB查询项目。 该表如下所示: DynamoDB表 我运行的代码是: 我错过了什么?