Profile

Mariana Bedran Lesche @maribedran


About Me

-

Proposals

Django o framework web mais completo que vocĂȘ respeita

Django é um dos frameworks web mais usados em Python. Uma das suas grandes vantagens é a simplicidade dos recursos da sua ORM para manipular bancos de dados.



O objetivo dessa palestra é apresentar a estrutura de um projeto em Django focado em persistir, organiar e recuperar dados de forma simples e intuitiva através da ORM da ferramenta. Pretendo apresentar de forma breve a arquitetura do framework, introduzindo os passos mais básicos para a criação de uma aplicação, e explorar com mais detalhes os recursos de manipulação de bancos. Meu foco será em apresentar o papel de cada elemento dentro da arquitetura do framework numa proposta de organização para uma aplicação de CRUD.

Os tópicos abordados serão:


- Arquitetura do Django: entre a web e o banco, quem faz o que?


- O Modelo: representando entradas de uma tabela em objetos Python


- Managers e QuerySets: as outras abstrações pythonicas para lidar com bancos


- Métodos úteis de todos os dias para fazer consultas simples, intuitivas e reaproveitáveis

Explorando QuerySets do Django

Django é um framework web escrito em Python que inclui diversos recursos para manipulação de bancos de dados. Com as abstrações da ORM, consultas complexas podem ser implementadas com chamadas simples de métodos, sem exigir nenhum conhecimento profundo de SQL para isso.


Meu objetivo nesta palestra é mostrar através de exemplos como o Django organiza o acesso ao banco e como utilizar os principais métodos disponíveis nos QuerySets e Managers dos Modelos: as classes disponibilizadas pelo Django para interagir com o banco. Pretendo cobrir os seguintes tópicos:



  • Modelos, Managers e QuerySets: o que faz cada um na arquitetura do Django

  • Apresentando os métodos mais importantes dos QuerySets para recuperar, atualizar e remover uma ou mais entradas

  • Otimizações de performance: escolhendo os dados certos para recuperar do banco com values(), values_list(), only() e defer()

  • Economizando memória com o iterator()

  • Evitando acessos desnecessários com select_related() e prefetch_related()

  • Agregando dados de colunas e tabelas diferentes

  • Evitando problemas de concorrência com select_for_update() e F() expressions

Usando recursos avançados da ORM do Django para consultas mais eficientes

A ORM do Django é uma ferramenta poderosa para realizar consultas em bancos de dados de forma simples e pythonica. Com algumas poucas chamadas de métodos já é possível realizar diversas consultas interessantes em um conjunto de dados.

Mas e quando essas funcionalidades mais básicas não são mais suficientes? Adicionando um pouco mais de complexidade à nossas queries, é possível otimizar consultas pesadas ou crirar novas que não são nem possíveis com os métodos mais simples.

Sabe aquela parte da documentação onde a gente nunca chega e pensa "um dia eu vou usar essas coisas"? O propósito dessa palestra é finalmente explorar essa mina de ouro que são os recursos avançados dos QuerySets do Django.

Para ver o potencial disso na prática, nada melhor do que dados da vida real. Afinal, queremos saber como esses recursos podem otimizar projetos concretos. São duas bases de dados públicos do Brasil: todos os sócios de empresas do país e gastos de Cota Parlamentar da Câmara dos Deputados. Vamos tentar responder perguntas complexas a partir desses dados usando recursos como Prefetch, FilteredRelatios, F expressions e Subquery.