As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Geração automática de um modelo do PynamoDB e funções de CRUD para o Amazon DynamoDB por meio de uma aplicação do Python
Vijit Vashishtha, Dheeraj Alimchandani e Dhananjay Karanjkar, Amazon Web Services
Resumo
É comum exigir entidades e funções para operações de criar, ler, atualizar e excluir (CRUD, na sigla em inglês) a fim de realizar operações no banco de dados do Amazon DynamoDB de maneira eficiente. O PynamoDB é uma interface baseada em Python que oferece suporte ao Python 3. Além disso, a interface oferece recursos como suporte a transações do Amazon DynamoDB, serialização e desserialização automáticas de valores de atributos e compatibilidade com estruturas populares do Python, como Flask e Django. Esse padrão auxilia desenvolvedores que usam o Python e o DynamoDB, oferecendo uma biblioteca que facilita a criação automática de modelos PynamoDB e de funções para operações de CRUD. Enquanto gera as funções de CRUD essenciais para tabelas de banco de dados, o padrão também pode reverter a engenharia de modelos do PynamoDB e de funções de CRUD usando tabelas do Amazon DynamoDB. Este padrão foi projetado para simplificar operações de banco de dados usando uma aplicação baseada em Python.
Os principais recursos desta solução são os seguintes:
Esquema JSON para um modelo do PynamoDB: gere automaticamente modelos do PynamoDB em Python importando um arquivo de esquema JSON.
Geração de funções de CRUD: gere automaticamente funções para realizar operações de CRUD em tabelas do DynamoDB.
Engenharia reversa usando o DynamoDB: use o mapeamento objeto-relacional (ORM, na sigla em inglês) do PynamoDB para reverter engenharia de modelos do PynamoDB e de funções de CRUD para tabelas existentes do Amazon DynamoDB.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
Python versão 3.8 ou versões posteriores, baixado
e instalado Jinja2 na versão 3.1.2 ou em versões posteriores, baixado
e instalado Tabelas do Amazon DynamoDB para as quais você deseja gerar o ORM
AWS Command Line Interface (AWS CLI), instalado e configurado
PynamoDB na versão 5.4.1 ou versões posteriores, instalado
Arquitetura
Pilha de tecnologias de destino
Script JSON
Aplicação do Python
Modelo do PynamoDB
Instância de banco de dados do Amazon DynamoDB
Arquitetura de destino

Você cria um arquivo de esquema JSON de entrada. Esse arquivo de esquema JSON representa os atributos das respectivas tabelas do DynamoDB das quais você deseja gerar modelos do PynamoDB e funções de CRUD. O arquivo contém as seguintes três chaves principais:
name: o nome da tabela de destino no DynamoDB.region— O Região da AWS local onde a mesa está hospedadaattributes: os atributos que fazem parte da tabela de destino, como a chave de partição (também conhecida como atributo de hash), chave de classificação, índices secundários locais, índices secundários globais e qualquer atributo não relacionado à chave. Esta ferramenta espera que o esquema de entrada forneça apenas os atributos não relacionados às chaves, pois a aplicação busca os atributos relacionados às chaves diretamente da tabela de destino. Para obter um exemplo de como especificar atributos para o arquivo de esquema JSON, consulte a seção Informações adicionais deste padrão.
Execute a aplicação do Python e forneça o arquivo de esquema JSON como entrada.
A aplicação do Python lê o arquivo de esquema JSON.
A aplicação do Python se conecta às tabelas do DynamoDB para derivar o esquema e os tipos de dados. A aplicação executa a operação describe_table
e busca os atributos de chave e de índice para a tabela. A aplicação do Python combina os atributos do arquivo de esquema JSON com os da tabela do DynamoDB. Ele usa o mecanismo de modelos Jinja para gerar um modelo do PynamoDB e as funções de CRUD correspondentes.
Você acessa o modelo do PynamoDB para realizar operações de CRUD na tabela do DynamoDB.
Ferramentas
Serviços da AWS
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
Outras ferramentas
O Jinja
é um mecanismo de geração de modelos extensível que compila modelos em código Python otimizado. Este padrão usa o mecanismo Jinja para gerar conteúdo dinâmico com a incorporação de espaços reservados e de lógica nos modelos. O PynamoDB
é uma interface baseada em Python para o Amazon DynamoDB. Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório de modelos PyNamoDB de GitHub geração automática
Pacote de controle
O pacote Python de controle contém a lógica principal da aplicação, que ajuda a gerar o modelo do PynamoDB e as funções de CRUD. Ele contém o seguinte:
input_json_validator.py: este script em Python valida o arquivo de esquema JSON de entrada e cria os objetos Python que contêm a lista das tabelas de destino do DynamoDB e os atributos requeridos para cada uma.dynamo_connection.py: este script estabelece uma conexão com a tabela do DynamoDB e emprega a operaçãodescribe_tablepara extrair os atributos necessários para criar o modelo do PynamoDB.generate_model.py: este script contém a classeGenerateModeldo Python, que cria o modelo do PynamoDB com base no arquivo de esquema JSON de entrada e na operaçãodescribe_table.generate_crud.py: para as tabelas do DynamoDB especificadas no arquivo de esquema JSON, este script usa a operaçãoGenerateCrudpara criar as classes do Python correspondentes.
Modelos
Este diretório do Python contém os seguintes modelos do Jinja:
model.jinja: este modelo do Jinja contém a expressão de modelo para gerar o script do modelo do PynamoDB.crud.jinja: este modelo do Jinja contém a expressão de modelo para gerar o script das funções de CRUD.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clonar o repositório. | Digite o comando apresentado a seguir para clonar o repositório Auto-generate PynamoDB models and CRUD functions
| Desenvolvedor de aplicativos |
Configure o ambiente do Python. |
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Modifique o arquivo de esquema JSON. |
| Desenvolvedor de aplicativos |
Execute a aplicação do Python. | Digite o comando apresentado a seguir para gerar os modelos do PynamoDB e as funções de CRUD, substituindo
| Desenvolvedor de aplicativos |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Verifique o modelo do PynamoDB gerado. |
| Desenvolvedor de aplicativos |
Verifique as funções de CRUD geradas. |
| Desenvolvedor de aplicativos |
Recursos relacionados
Componentes principais do Amazon DynamoDB (documentação do DynamoDB)
Melhorar o acesso aos dados com índices secundários no DynamoDB (documentação do DynamoDB)
Mais informações
Atributos de amostra para o arquivo do esquema JSON
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]