Python中的DynamoDB

2025 年 3 月 4 日 | 阅读 4 分钟

Amazon DynamoDB 是一项由 Amazon Web Services 提供、完全托管的 NoSQL 数据库服务。它提供快速、可预测的性能以及无缝的可扩展性,使其非常适合需要任何规模下可靠、个位数毫秒级延迟的应用程序。DynamoDB 提供键值和文档数据类型,允许您构建可以存储和检索任意数量数据并处理任意级别请求流量的数据库。在本教程中,我们将学习如何使用 boto3 模块(AWS 的 Python SDK)在 Python 中连接到 DynamoDB。

设置环境

让我们开始 DynamoDB 操作,首先配置 Python 环境。

1. 安装 Python 的 AWS SDK (boto3)

要连接到 DynamoDB,请安装 boto3 包

语法

2. 设置 AWS 凭证

您必须在计算机上配置 AWS 凭证。这些凭证用于验证对 DynamoDB 的请求。要使用 AWS CLI 配置凭证,请运行

语法

系统将提示您输入 AWS 访问密钥 ID、秘密访问密钥、区域和输出格式。

DynamoDB 的一些基础知识

DynamoDB 表由项组成,每个项代表一组属性。表中的每个项都由其主键唯一标识,主键可以是简单键(分区键)或复合键。

  • 分区键: 由一个名为分区键的属性组成。DynamoDB 将分区键值作为输入传递给内部哈希函数,该函数决定项存储在哪个分区。
  • 复合键: 复合键由两个属性组成。第一个属性是分区键,第二个是排序键。具有相同分区键的所有项都一起存储,并按照排序键值指定的顺序排列。

使用 Python 操作 DynamoDB

现在,我们已经完成了设置并了解了 DynamoDB 的基础知识,让我们看看如何使用 Python 连接到它。

1. 创建 DynamoDB 表

要创建 DynamoDB 表,请调用 'boto3' 中的 'create_table' 方法。以下是创建名为“Users”的带有复合主键的表的示例

代码

输出

 
Table Users created successfully!   

在此示例中,分区键是“username”,排序键是“last_name”。“ProvisionedThroughput”选项设置了表的读取和写入容量单位。

2. 向表中插入数据

“put_item”方法允许您向 DynamoDB 表中添加项。以下是如何向“Users”表中添加数据的方法

在此示例中,一个具有“username”、“first_name”、“last_name”、“age”和“account_type”属性的项被添加到 Users 表中。

3. 从表中检索数据

您可以通过调用“get_item”方法从表中检索项。例如,要获取分区键为“jackwilliam”且排序键为“William”的项

代码

输出

 
{
    'username': 'jackwilliam',
    'first_name': 'Jack',
    'last_name': 'William',
    'age': 30,
    'account_type': 'premium'
}   

此代码根据主键(“username”、“last_name”)获取项并打印它。

4. 更新项

要更新现有的 DynamoDB 项,请使用“update_item”方法。以下是如何更新用户“jackwilliam”的“age”属性的示例。

此代码将指定项的“age”属性设置为“31”。

5. 删除项

要从表中删除项,请使用“delete_item”方法。例如,删除用户“jackwilliam”

此代码删除具有指定主键的项。

最佳实践

以下是一些与使用 Python 操作 DynamoDB 相关的最佳实践

  1. 明智地使用预置容量:为了优化成本和性能,请仔细选择读取和写入容量单位。
  2. 设计高效的主键:规划您的分区键和排序键,以确保数据均匀分发并避免热点分区。
  3. 避免全表扫描:扫描在成本和性能方面都很昂贵。尽可能使用查询。
  4. 实现指数退避:由于负载过重或其他临时情况,DynamoDB 操作有时可能会失败。实现指数退避可以帮助您管理重试。
  5. 使用全局和本地二级索引:如果您希望使用主键以外的属性查询表,请考虑使用二级索引。

结论

总之,DynamoDB 为管理 NoSQL 数据库提供了一个稳定且可扩展的选项,并且它通过“boto3”库与 Python 的集成促进了交互和管理。了解如何构建表、执行 CRUD 操作以及使用查询和过滤功能,可以使您在构建高性能应用程序时有效利用 DynamoDB 的优势。使用高效的键设计、最佳的容量利用和谨慎的二级索引管理等最佳实践,将提高 DynamoDB 系统的性能和成本效益。借助 Python 这一与 DynamoDB 集成的工具,您可以构建既具有弹性又能以低延迟处理大量数据的应用程序。