本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Python 應用程式自動產生 Amazon DynamoDB 的 PynamoDB 模型和 CRUD 函數 DynamoDB
Vijit Vashishtha、Dheeraj Alimchandani 和 Dhananjay Karanjkar,Amazon Web Services
Summary
通常需要實體和建立、讀取、更新和刪除 (CRUD) 操作函數,才能有效率地執行 Amazon DynamoDB 資料庫操作。PynamoDB 是以 Python 為基礎的介面,支援 Python 3。它還提供功能,例如支援 Amazon DynamoDB 交易、自動屬性值序列化和還原序列化,以及與常見 Python 架構的相容性,例如 Flask 和 Django。此模式透過提供簡化 DynamoDB 模型和 CRUD 操作函數自動建立的PynamoDB。雖然它為資料庫資料表產生必要的 CRUD 函數,但也可以從 Amazon PynamoDB 資料表反向工程 PynamoDB 模型和 CRUD 函數。 DynamoDB 此模式旨在使用 Python 型應用程式簡化資料庫操作。
以下是此解決方案的主要功能:
- JSON 結構描述到 PynamoDB 模型 – 透過匯入 JSON 結構描述檔案,在 Python 中自動產生 PynamoDB 模型。 
- CRUD 函數產生 – 自動產生函數,以在 DynamoDB 資料表上執行 CRUD 操作。 
- 從 DynamoDB 反向工程 – 使用 PynamoDB 物件關聯映射 (ORM) 對現有 Amazon DynamoDB 資料表的 PynamoDB 模型和 CRUD 函數進行反向工程。 DynamoDB 
先決條件和限制
先決條件
架構
目標技術堆疊
- JSON 指令碼 
- Python 應用程式 
- PynamoDB 模型 
- Amazon DynamoDB 資料庫執行個體 
目標架構

- 您可以建立輸入 JSON 結構描述檔案。此 JSON 結構描述檔案代表您要從 和 CRUD 函數建立 PynamoDB 模型之個別 DynamoDB 資料表的屬性。 PynamoDB 它包含以下三個重要金鑰: 
- 執行 Python 應用程式,並提供 JSON 結構描述檔案做為輸入。 
- Python 應用程式會讀取 JSON 結構描述檔案。 
- Python 應用程式會連線至 DynamoDB 資料表,以衍生結構描述和資料類型。應用程式會執行 describe_table - 操作,並擷取資料表的索引鍵和索引屬性。 
- Python 應用程式結合了 JSON 結構描述檔案和 DynamoDB 資料表中的屬性。它使用 Jinja 範本引擎來產生 PynamoDB 模型和對應的 CRUD 函數。 
- 您可以存取 PynamoDB 模型,在 DynamoDB 資料表上執行 CRUD 操作。 
工具
AWS 服務
- Amazon DynamoDB 是一項全受管 NoSQL 資料庫服務,可提供快速、可預期且可擴展的效能。 
其他工具
程式碼儲存庫
此模式的程式碼可在 GitHub 自動產生 PynamoDB 模型和 CRUD 函數
控制器套件
控制器 Python 套件包含主要應用程式邏輯,可協助產生 PynamoDB 模型和 CRUD 函數。其中包含下列各項:
- input_json_validator.py– 此 Python 指令碼會驗證輸入 JSON 結構描述檔案,並建立 Python 物件,其中包含目標 DynamoDB 資料表的清單,以及每個資料表的必要屬性。
- dynamo_connection.py– 此指令碼會建立與 DynamoDB 資料表的連線,並使用- describe_table操作擷取建立 PynamoDB 模型所需的屬性。
- generate_model.py– 此指令碼包含 Python 類別- GenerateModel,可根據輸入 JSON 結構描述檔案和- describe_table操作來建立 PynamoDB 模型。
- generate_crud.py– 對於 JSON 結構描述檔案中定義的 DynamoDB 資料表,此指令碼會使用- GenerateCrud操作來建立 Python 類別。
範本
此 Python 目錄包含下列 Jinja 範本:
- model.jinja– 此 Jinja 範本包含用於產生 PynamoDB 模型指令碼的範本表達式。
- crud.jinja– 此 Jinja 範本包含用於產生 CRUD 函數指令碼的範本表達式。
史詩
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 複製儲存庫。 | 輸入下列命令以複製自動產生 PynamoDB 模型和 CRUD 函數 
 | 應用程式開發人員 | 
| 設定 Python 環境。 | 
 | 應用程式開發人員 | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 修改 JSON 結構描述檔案。 | 
 | 應用程式開發人員 | 
| 執行 Python 應用程式。 | 輸入下列命令來產生 PynamoDB 模型和 CRUD 函數,其中  
 | 應用程式開發人員 | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 驗證產生的 PynamoDB 模型。 | 
 | 應用程式開發人員 | 
| 驗證產生的 CRUD 函數。 | 
 | 應用程式開發人員 | 
相關資源
- Amazon DynamoDB 的核心元件 (DynamoDB 文件) 
- 使用次要索引改善資料存取 (DynamoDB 文件) 
其他資訊
JSON 結構描述檔案的範例屬性
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]