PynamoDB 项目教程
1. 项目的目录结构及介绍
PynamoDB 项目的目录结构如下:
PynamoDB/
├── docs/
├── examples/
├── pynamodb/
├── tests/
├── typing_tests/
├── .coveragerc
├── .gitignore
├── .readthedocs.yaml
├── LICENSE
├── MANIFEST.in
├── README.rst
├── mypy.ini
├── pytest.ini
├── requirements-dev.txt
├── setup.cfg
└── setup.py
目录介绍
- docs/: 包含项目的文档文件,通常是使用 Sphinx 生成的文档。
- examples/: 包含使用 PynamoDB 的示例代码,帮助用户理解如何使用该库。
- pynamodb/: 核心代码库,包含 PynamoDB 的所有实现代码。
- tests/: 包含项目的单元测试和集成测试代码。
- typing_tests/: 包含类型检查测试代码,确保代码的类型安全。
- .coveragerc: 配置文件,用于代码覆盖率测试。
- .gitignore: Git 忽略文件配置。
- .readthedocs.yaml: 配置文件,用于在 Read the Docs 上构建文档。
- LICENSE: 项目的开源许可证文件。
- MANIFEST.in: 用于指定在打包时包含的文件。
- README.rst: 项目的主 README 文件,包含项目的基本介绍和使用说明。
- mypy.ini: 配置文件,用于 Mypy 静态类型检查。
- pytest.ini: 配置文件,用于 Pytest 测试框架。
- requirements-dev.txt: 开发依赖包列表。
- setup.cfg: 配置文件,用于项目的打包和分发。
- setup.py: 用于安装项目的 Python 脚本。
2. 项目的启动文件介绍
PynamoDB 是一个库,没有传统的“启动文件”。用户在使用 PynamoDB 时,通常会创建自己的 Python 脚本来定义模型和执行操作。以下是一个简单的示例:
from pynamodb.models import Model
from pynamodb.attributes import UnicodeAttribute
class UserModel(Model):
"""
一个 DynamoDB 用户模型
"""
class Meta:
table_name = "dynamodb-user"
email = UnicodeAttribute(null=True)
first_name = UnicodeAttribute(range_key=True)
last_name = UnicodeAttribute(hash_key=True)
# 创建表(如果需要)
UserModel.create_table(read_capacity_units=1, write_capacity_units=1)
# 创建新用户
user = UserModel("John", "Denver")
user.email = "djohn@company.org"
user.save()
在这个示例中,UserModel
是一个自定义的模型类,用户可以通过这个类来操作 DynamoDB 表。
3. 项目的配置文件介绍
PynamoDB 的配置主要通过代码中的 Meta
类来完成。以下是一些常见的配置项:
表名配置
class Meta:
table_name = "dynamodb-user"
主机配置(用于本地开发)
class Meta:
host = "http://localhost:8000"
流配置
from pynamodb.constants import STREAM_NEW_AND_OLD_IMAGE
class Meta:
stream_view_type = STREAM_NEW_AND_OLD_IMAGE
全局二级索引配置
from pynamodb.indexes import GlobalSecondaryIndex, AllProjection
from pynamodb.attributes import NumberAttribute, UnicodeAttribute
class ViewIndex(GlobalSecondaryIndex):
class Meta:
read_capacity_units = 2
write_capacity_units = 1
projection = AllProjection()
view = NumberAttribute(default=0, hash_key=True)
class TestModel(Model):
class Meta:
table_name = "TestModel"
forum = UnicodeAttribute(hash_key=True)
thread = UnicodeAttribute(range_key=True)
view = NumberAttribute(default=0)
view_index = ViewIndex()
通过这些配置,用户可以灵活地定义和操作 DynamoDB 表。