Gere automaticamente um modelo PyNamoDB e funções CRUD para o Amazon DynamoDB usando um aplicativo Python - Recomendações da AWS

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á.

Gere automaticamente um modelo PyNamoDB e funções CRUD para o Amazon DynamoDB usando um aplicativo Python

Criado por Vijit Vashishtha (AWS), Dheeraj Alimchandani (AWS) e Dhananjay Karanjkar (AWS)

Repositório de códigos: amazon-reverse-engineer-dynamodb

Ambiente: PoC ou piloto

Tecnologias: DevelopmentAndTesting; Bancos de dados; DevOps

Workload: código aberto

Serviços da AWS: Amazon DynamoDB

Resumo

É comum exigir entidades e funções de operações de criação, leitura, atualização e exclusão (CRUD) para realizar com eficiência as operações do banco de dados do Amazon DynamoDB. PyNamoDB é uma interface baseada em Python que suporta Python 3. Ele também fornece recursos como suporte para transações do Amazon DynamoDB, serialização e desserialização automáticas de valores de atributos e compatibilidade com estruturas comuns do Python, como Flask e Django. Esse padrão ajuda os desenvolvedores que trabalham com Python e DynamoDB fornecendo uma biblioteca que simplifica a criação automática de modelos PyNamoDB e funções de operação CRUD. Embora gere funções CRUD essenciais para tabelas de banco de dados, também pode fazer engenharia reversa de modelos do PyNamoDB e funções CRUD das tabelas do Amazon DynamoDB. Esse padrão foi projetado para simplificar as operações do banco de dados usando um aplicativo baseado em Python.

A seguir estão os principais recursos dessa solução:

  • Esquema JSON para modelo PyNamoDB — Gere automaticamente modelos PyNamoDB em Python importando um arquivo de esquema JSON.

  • Geração de funções CRUD — Gere automaticamente funções para realizar operações CRUD em tabelas do DynamoDB.

  • Engenharia reversa do DynamoDB — Use o mapeamento objeto-relacional (ORM) do PyNamoDB para fazer engenharia reversa dos modelos do PyNamoDB e das funções CRUD das tabelas existentes do Amazon DynamoDB.

Pré-requisitos e limitações

Pré-requisitos

Arquitetura

Pilha de tecnologias de destino

  • Script JSON

  • Aplicação Python

  • modelo PyNamoDB

  • Instância de banco de dados Amazon DynamoDB

Arquitetura de destino

Usando um aplicativo Python para gerar funções CRUD e modelo PyNamoDB a partir de tabelas do DynamoDB.
  1. Você cria um arquivo de esquema JSON de entrada. Esse arquivo de esquema JSON representa os atributos das respectivas tabelas do DynamoDB a partir das quais você deseja criar modelos PyNamoDB e para as quais você deseja criar funções CRUD. Ele contém as três chaves importantes a seguir:

  2. Execute o aplicativo Python e forneça o arquivo do esquema JSON como entrada.

  3. O aplicativo Python lê o arquivo do esquema JSON.

  4. O aplicativo Python se conecta às tabelas do DynamoDB para derivar o esquema e os tipos de dados. O aplicativo executa a operação describe_table e busca os atributos de chave e índice da tabela.

  5. O aplicativo Python combina os atributos do arquivo de esquema JSON e da tabela do DynamoDB. Ele usa o mecanismo de modelo Jinja para gerar um modelo PyNamoDB e as funções CRUD correspondentes.

  6. Você acessa o modelo PyNamoDB para realizar operações 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 modelagem extensível que compila modelos em código Python otimizado. Esse padrão usa o Jinja para gerar conteúdo dinâmico incorporando espaços reservados e 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 e funções CRUD. O repositório é dividido em duas partes principais: o pacote do controlador e os modelos.

Pacote de controlador

O pacote Python do controlador contém a lógica principal do aplicativo que ajuda a gerar o modelo PyNamoDB e as funções CRUD. Ele contém o seguinte:

  • input_json_validator.py— Esses scripts Python validam o arquivo de esquema JSON de entrada e criam os objetos Python que contêm a lista de tabelas de destino do DynamoDB e os atributos necessários para cada uma.

  • dynamo_connection.py— Esse script estabelece uma conexão com a tabela do DynamoDB e usa a operação para extrair describe_table os atributos necessários para criar o modelo do PyNamoDB.

  • generate_model.py— Esse script contém uma classe Python GenerateModel que cria o modelo PyNamoDB com base no arquivo de esquema JSON de entrada e na operação. describe_table

  • generate_crud.py— Para as tabelas do DynamoDB definidas no arquivo de esquema JSON, esse script usa a GenerateCrud operação para criar as classes do Python.

Modelos

Esse diretório Python contém os seguintes modelos do Jinja:

  • model.jinja— Esse modelo do Jinja contém a expressão do modelo para gerar o script do modelo PyNamoDB.

  • crud.jinja— Este modelo Jinja contém a expressão de modelo para gerar o script de funções CRUD.

Épicos

TarefaDescriçãoHabilidades necessárias

Clonar o repositório.

Digite o comando a seguir para clonar o repositório de modelos PyNamoDB e funções CRUD de geração automática.

git clone https://github.com/aws-samples/amazon-reverse-engineer-dynamodb.git
Desenvolvedor de aplicativos

Configure o ambiente Python.

  1. Navegue até o diretório de nível superior no repositório clonado.

    cd amazon-reverse-engineer-dynamodb
  2. Digite o comando a seguir para instalar as bibliotecas e os pacotes necessários.

    pip install -r requirements.txt
Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Modifique o arquivo do esquema JSON.

  1. Navegue até o diretório de nível superior no repositório clonado.

    cd amazon-reverse-engineer-dynamodb
  2. Abra o test.json arquivo no editor de sua preferência. Você pode usar esse arquivo como referência para criar seu próprio arquivo de esquema JSON ou pode atualizar os valores desse arquivo para que correspondam ao seu ambiente.

  3. Modifique o nome Região da AWS, os valores e os atributos das tabelas de destino do DynamoDB.

    Observação: se você definir uma tabela que não existe no arquivo do esquema JSON, essa solução não gera modelos ou funções CRUD para essa tabela.

  4. Salve e feche o arquivo test.json. Recomendamos que você salve esse arquivo com um novo nome.

Desenvolvedor de aplicativos

Execute o aplicativo Python.

Digite o comando a seguir para gerar os modelos PyNamoDB e as funções CRUD, <input_schema.json> onde está o nome do seu arquivo de esquema JSON.

python main.py --file <input_schema.json>
Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Verifique o modelo PyNamoDB gerado.

  1. No diretório de nível superior do repositório clonado, digite o comando a seguir para navegar até o repositório. models

    cd models
  2. Por padrão, essa solução nomeia o arquivo de modelo PyNamoDB. demo_model.py Valide se esse arquivo está presente.

Desenvolvedor de aplicativos

Verifique as funções CRUD geradas.

  1. No diretório de nível superior do repositório clonado, digite o comando a seguir para navegar até o repositório. crud

    cd crud
  2. Por padrão, essa solução nomeia o scriptdemo_crud.py. Valide se esse arquivo está presente.

  3. Use as classes Python no demo_crud.py arquivo para realizar uma operação CRUD na tabela de destino do DynamoDB. Confirme se a operação foi concluída com êxito.

Desenvolvedor de aplicativos

Recursos relacionados

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" } ] } ]