Melhorar o desempenho de queries no Django com select_related e prefetch_related

  Рет қаралды 3,102

Samuel Gonçalves

Samuel Gonçalves

Күн бұрын

Пікірлер: 103
@amaurirossettigiovani8695
@amaurirossettigiovani8695 Жыл бұрын
Mais um conteúdo explicado com altíssima qualidade. Parabéns Samuel! 👏🏻👏🏻👏🏻
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Muito obrigado pelo feedback, Amauri. Grande abraço e sucesso.
@marciocapellari1981
@marciocapellari1981 Жыл бұрын
Parabéns Samuel pelo tema e didática apresentados.
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Eu que agradeço pelo feedback, Márcio. Grande abraço e sucesso pra vc.
@edsonpassos7912
@edsonpassos7912 2 жыл бұрын
Excelente aula. Parabéns Professor!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, Edson. Boa sorte e grande abraço.
@daniel.sanmartin
@daniel.sanmartin 2 жыл бұрын
Parabéns Samuel. A explicação está bem didática.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, Daniel. Fico feliz com seu feedback. Se tiver alguma sugestão de tema ou dúvida que eu possa ajudar, só me falar. Abraço.
@eduardoferreira222
@eduardoferreira222 Жыл бұрын
Excelente. Parabéns pelo conteúdo.
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Obrigado pelo feedback, camarada. Sucesso pra vc.
@mrleandrull
@mrleandrull 2 жыл бұрын
Muito show meu amigo, ótima explicação, continue fazendo vídeos assim!! Parabéns!!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Obrigado, camarada. Fico feliz com seu feedback. Sorte pra nós. Grande abraço.
@vladimirgoncalves5273
@vladimirgoncalves5273 2 жыл бұрын
Muito boa a sua didática, parabéns!l
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada
@matheuscerozi6649
@matheuscerozi6649 2 жыл бұрын
conteúdo fera samuel, obrigado
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Eu que agradeço pelo feedback, camarada. Boa sorte. Abraço.
@zerielribeiro5787
@zerielribeiro5787 3 жыл бұрын
Excelente aula e muito útil a informação 👍👏
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito bom, Zeriel. Espero que isso possa ajudar no seu projeto. Boa sorte. Abraço.
@fabiosbam
@fabiosbam 3 жыл бұрын
Obrigado por compartilhar conhecimento! Parabéns pelo trabalho 👏
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Obrigado pelo feedback, Fabio. Abraço.
@brunnocristianno
@brunnocristianno 2 жыл бұрын
Ótimo conteudo! Me ajudou muito, parabens!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada. Espero que aproveite os outros conteúdos do canal também. Grande abraço.
@hyancosta6856
@hyancosta6856 Жыл бұрын
Mano, tu me ajudou muito... Tava com esse problema e graças a Deus resolvi. Vlw!!
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Que maravilha mano. Isso faz muita diferença no projeto. rsrsrs
@PySaga
@PySaga 3 жыл бұрын
Muito show, obrigado mais uma vez Samuel.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Eu que agradeço, camarada. Abraço.
@jeanviana8321
@jeanviana8321 3 ай бұрын
Explicação perfeita !
@Roberto-sx5ur
@Roberto-sx5ur Жыл бұрын
Valeu seu video me ajudou a esclarecer algumas duvidas sobre estes recursos valeu mesmo obrigado e continue fazendo mais conteudos importantes assim. 😁
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Que bom que esclareceu algo, camarada. Sucesso pra vc. Abraço.
@zandorsabino9279
@zandorsabino9279 2 ай бұрын
Parabéns Samuel! Ficou muito bom o conteúdo.
@rafaelfidalgo8938
@rafaelfidalgo8938 3 жыл бұрын
Select Related e Prefetch de forma bem detalhada...👌🏽
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Obrigado pelo feedback, camarada. Abraço.
@airtonlimajr
@airtonlimajr 2 жыл бұрын
Muito bom man !! Parabéns !!!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada. Grande abraço.
@antonioccnt
@antonioccnt 3 жыл бұрын
Obrigado pelas dicas! Show de bola!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, Antonio. Fico feliz em ajudar. E fique a vontade para sugerir temas para os próximos vídeos.
@harrisonpov
@harrisonpov Жыл бұрын
cara nem em conteúdo pago encontra isso.. precisei pesquisar por fora de um curso pago que estou realizando e esse exemplo de quantas queries e em quanto tempo a execução é feita, caiu como uma luva! Muito obrigado!
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Fico muito feliz com seu comentário, camarada. Espero que esteja evoluindo na jornada de aprendizado. Abraço
@elsofernandes
@elsofernandes 2 жыл бұрын
muito bom
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, Elso. Abrço.
@perezcyber
@perezcyber 2 жыл бұрын
Top demais me ajudou mt , sou iniciante
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Que maravilha, Marcus. Isso é ótimo. Fico feliz com isso. Boa sorte na sua carreira.
@cenatechdbcheckout7346
@cenatechdbcheckout7346 4 ай бұрын
Parabens pelo conteudo
@tutoriaisdeinstrucoesdecel8455
@tutoriaisdeinstrucoesdecel8455 2 жыл бұрын
Excelente!!!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Obrigado, camarada.
@nonatosales4772
@nonatosales4772 3 жыл бұрын
Que vídeo top. Parabéns Samuel. Aprendi muito com esse vídeo.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Que maravilha, Nonato. Fico feliz com isso. Obrigado pelo feedback. Grande abraço.
@greensinais_bots
@greensinais_bots 3 жыл бұрын
Obrigado por compartilhar ! Didática excelente! Parabéns pelo trabalho!!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado pelo feedback, camarada. E se você tiver uma sugestão de vídeo, será muito bem vinda. Abraço.
@EneasTeles
@EneasTeles 3 жыл бұрын
Muito bom!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, Eneas. Forte abraço.
@albromoc
@albromoc 3 жыл бұрын
Obrigado pela aula, Samuel! Foi a melhor explicação sobre o assunto que já vi. Preciso refatorar meu código pra poupar os recursos do VPS. Estou usando queries como se não houvesse amanhã, o sistema em protótipo e poucos registros no BD acaba escondendo esses problemas de performance. Dá pra fazer essa análise usando o Debug Toolbar também, né?
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Obrigado camarada. Fico feliz em saber. "Usando queries como se não houve amanhã"..... kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.Essa foi a melhor parte. É assim mesmo. Primeiro faz funcionar, depois melhora. Sim. No debug toolbar contabiliza todas as queries que estão dentro da view (mas acho que não contabiliza se estiverem dentro de um signal - Só uma observação) Parabéns pela atitude de refatorar, cara.
@albromoc
@albromoc 3 жыл бұрын
@@SamuelGoncalvesPython O ORM do Django torna tudo muito fácil, quase mágico kkkk Por isso é importante entender o que acontece nas entranhas e o custo embutido em cada ação.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
@@albromoc Exatamente isso. Aprender a usar é o primeiro passo. Entender os fundamentos é o caminho para usar com sabedoria. rsrsrsr
@RegisdoPython
@RegisdoPython 3 жыл бұрын
Obrigado por citar meu canal.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Por nada, camarada. Eu que agradeço. Que pergunta excelente. Acabei não falando isso pra não deixar longo, mas podemos enriquecer ele pelos comentários. Em resumo, eu diria o seguinte: O "only" e o "defer" dizem respeito como vai ser buscado os dados no banco de dados. E usando eles você tem uma lista de INSTÂNCIAS DA SUA CLASSE. Os nomes que ele deixa de buscar, ficam "vazios" no seu objeto, porém, quando vc tenta acessar ele volta no banco e faz mais uma consulta e retorna esse valor. O "values" e "values_list" mudam a forma do retorno dos dados. Ao invés de trazer um lista de instâncias, o "values" retorna um dicionário, e o "values_list" retorna uma lista de tuplas. Mas diferente do "only" e "defer", se você tentar acessar um valor que você não informou nos parâmetros, ele dá erro, pois ele não volta no banco para buscar novamente. Fique a vontade para corrigir ou complementar com seu ponto de vista. Vlws.
@rafaelfidalgo8938
@rafaelfidalgo8938 3 жыл бұрын
Deixa eu tomar nota disso tudo aqui, porque não é todo dia que se encontra um papo desse naipe no KZbin!!
@greensinais_bots
@greensinais_bots 3 жыл бұрын
Samuel e Regis sempre salvando! Os brabos do django!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
@@greensinais_bots muito obrigado, camarada. O importante é isso. Nos ajudarmos.
@janilsonvarela6839
@janilsonvarela6839 3 жыл бұрын
Muto bom. Bem útil.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Obrigado, Janilson. Fico feliz que tenha sido útil. Fique a vontade para sugerir temas Abraço.
@BlogdoMarcio
@BlogdoMarcio 3 жыл бұрын
Show.. partiu refatorar meus projetos rsrs...
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Tooooop. Depois de refatorar, lembre de voltar aqui e contar o que achou. rsrs Abraço.
@maosaroca
@maosaroca 2 жыл бұрын
Cara monta um curso na Udemy! O conteúdo que vc passa é muito bom.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada. Estou mesmo pensando em fazer isso. Abraço.
@fernandocoelho1334
@fernandocoelho1334 11 ай бұрын
Muito bom, mas não é bem isso que eu busco. A algum tempo atrás, desenvolvemos um sistema, utilizando outra linguagem que não vem ao caso, porém eu tenho todas as Query e View que utilizo para realizar estatísticas. Gostaria de poder aproveitar essas Query e desenvolver uma aplicação Django, que fizesse a leitura da Query do jeito que estão, sem necessariamente precisar "traduzir" para um ORM. É isso que estou buscando. Pretendo usar o Django também para desenvolver site, com oferta de serviços on-line, dashboard administrativos e com a possibilidade de possivelmente migrar essa aplicação que está em outra linguagem. Não gostaria de usar o ChartJs, que é Javascript.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 11 ай бұрын
Vc pode criar procedures ou views no seu banco, ou então vc pode utilizar o que é chamado de "raw queries" no django. Que basicamente é vc pegar uma instrução SQL que vc fez e mandar o django executar direto. Eu não tenho vídeo sobre esse tema ainda, mas vc deve achar alguma coisa boa aqui no youtube pra poder adiantar seu lado
@fernandocoelho1334
@fernandocoelho1334 11 ай бұрын
@@SamuelGoncalvesPython Grato pela resposta e colaboração. Me ajudou consideravelmente, apesar de ter cerca de 3 décadas na área de DEV, o Python, nunca aprofundei. Esqueci de dizer que as Qyery já as utilizo, para a momtagem de Gráficos e Dashboard. O ambiente escolhido foi Python, contudo o que eu uso é o Streamlit, onde elas são usadas, também com o pacote Plotly, mas apesar de ser bem fácil, eu não quero ficar lidando com um monte coisa. Desejo concentrar com um monte de coisas, porque o Django vai permitir ter um leque de aplicações e no máximo, para migrar para o Django Ninja ou até FastAPI, não vai dar trabalho, pois já tenho uma boa noção quando usei Spring Boot no Java e o FastAPI é muito mais fácil. O Ninja e FastAPI, tem muito em comum e o Pydantic é ótimo.
@victoraugusto6823
@victoraugusto6823 2 жыл бұрын
Excelente aula!! Uma dúvida: Se meu modelo conter campos foreign key e many to many ao mesmo tempo, qual opção utilizar? Posso usar select_related e prefetch_related na mesma query?
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, Victor. Pra falar a verdade, eu ainda não testei usar os dois juntos. Mas posso olhar isso depois pra vc, caso vc ainda não tenha conseguido. Se tiver, fala ai como fez. Abraço.
@mitterduarte4303
@mitterduarte4303 2 жыл бұрын
Meu amigo video top...Quero saber como ussar Django shell no Jupyter Notebook não tinha idea que isso era possivel ...
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada. É possível sim. E é muito útil. kkkkk Depois vou ver se faço um vídeo sobre isso Abraço.
@alexbarbosa4131
@alexbarbosa4131 3 жыл бұрын
Muito legal parabéns pelo vídeo , me ajudou bastante, agora fica uma sugestão e uma pergunta. Mostre um exemplo de importação em CSV principalmente quando se possui muitos dados, acho um tema interessante. E se o caso da tabela que você possui ForeignKey tiver um ForeignKey com outra tabela e você também precisa incluir essa informação, como se encaixa dentro do select_related? Vou tentar explicar abaixo. Equipamento possui um modelo e um modelo possui o tipo, e quero mostrar o dados do equipamento com o modelo e seu tipo.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, Alex. E eu gostei da dica. Vou anotar aqui sim. Obrigado. Nesse caso de fk dentro de fk, ficaria assim, usando seu próprio exemplo: equipamentos = Equipamento.objects.all().select_related('modelo__tipo') Nesse caso ai ele busca as duas fk, modelo e tipo. E vc vai ter apenas uma query. Por favor, se der certo, volta aqui no comentário e me fala. Pois isso também pode ajudar outras pessoas que estiverem com o mesmo problema. Abraço e boa sorte.
@alexbarbosa4131
@alexbarbosa4131 3 жыл бұрын
@@SamuelGoncalvesPython Obrigado pela resposta! Fiz o teste aqui, e melhorou, baixou 3 segundos do que estava antes após incluir o tipo no select_related, bem legal essa função.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Por nada, camarada. Esse é um bom caso de sucesso rsrsrs. Esses três segundos representam quanto por cento do tempo total?
@alexbarbosa4131
@alexbarbosa4131 3 жыл бұрын
@@SamuelGoncalvesPython representou 73% do total , bem significativo!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
@@alexbarbosa4131 caraaaaca. Muuuuito significativo. Parabéns camarada. Sucesso ai.
@kzoriz
@kzoriz 3 жыл бұрын
up
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Tmj
@massacotesilva
@massacotesilva 2 жыл бұрын
Parabéns mano! Muito boa a aula. Uma duvida: é possível passar valores nos parâmetros do only? ex.: only(empresas__cnpj__in=[])
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Muito obrigado, camarada. A forma que funciona essa query é diferente. No only vc escohe "quais campos serão buscados". Se vc quiser aplicar um filtro, vc tem que colocar isso dentro do "filter()" Abraço.
@Vicmendon
@Vicmendon 3 жыл бұрын
Sei que não tem nada a ver com o vídeo, mas estava assistindo esse e veio a dúvida.. Como eu faço para definir o ID de um elemento html com o ID de um produto enviado pelo context para a página? Com o {{ id }} eu consigo mostrar ele, mas dentro de uma tag não funciona. Como eu consigo fazer isso?
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Fala camarada. Beleza? É possível fazer isso sim. A sintaxe fica assim: Conteúdo Simples assim. Agora, se vc estiver mandando o "objeto", ao invés de colocar "{{ id }}", vc vai colocar "{{ objeto.id }}" Testa ai e me conta se deu certo. Abraço.
@Vicmendon
@Vicmendon 3 жыл бұрын
@@SamuelGoncalvesPython eu consegui logo depois que perguntei Huahuahuahuahuahua errei exatamente pq estava mandando o objeto, aí não estava dando certo. Agora meu problema é com autenticação de usuário que não é membro da equipe. Já fica a ideia aí pro próximo vídeo 😅 Uma página de login que libere o login de quem não é da equipe, pq no ADMIN só loga se o usuário for da equipe.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
@@Vicmendon ahahahahah Que bom que resolveu, parabéns. Agora sobre o login é o seguinte: Se estiver usando o admin, em tese, a regra é essa mesmo. Só quem é membro da equipe acessa. Pois em tese o admin não deveria ser aberto para o "público" de usuários. Talvez tenhamos que dar uma repensada na estrutura do seu projeto se for o caso
@leonardogregianin
@leonardogregianin 3 жыл бұрын
Parabéns Samuel, esse é um tema muito legal de trabalhar porque vc consegue ver na prática a performance melhorar. Seria legal aprofundar mais nisso, prefect_related com Prefect em relacionamentos nested em vários models.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, Leonardo. Bom que curtiu. Realmente, dá pra aprofundar. Acho que vale a pena mesmo fazer um outro vídeo ensinando mais coisas e mostrando como fica em modelos nesteds de segunda e terceiro nível. Obrigado. Abraço.
@jricardo2012
@jricardo2012 3 жыл бұрын
Olá professor, tem algum curso mais completo ou está pensando em formar turma?? Abraço
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Fala Ricardo, tudo bem? Eu estou ainda planejando o curso. Mas trabalho com mentorias e freelancer também. Me chama no insta @samuelgoncalves.tech
@HigorLP
@HigorLP 3 жыл бұрын
Aula excelente como sempre! Parabéns cara! Pergunta: Pq vc prefere criar manualmente a tabela de relacionamento de muito para muitos e não utilizar o ManyToManyField? Eu sei que tipo criando a tabela dá pra acrescentar novos atributos como por exemplo: Adicionar o atributo nivel_conhecimento em ProgramadorLinguagem para ficar programador X tem o nível de Y na linguagem Z. Ai blz, mas nesse caso do vídeo, foi só pra exemplificar ou é mais interessante utilizar dessa forma do que o ManyToManyField?
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, Higor. Excelente pergunta. Nesse caso eu criei ela manualmente e bem "simples" pois era apenas para servir de exemplo e eu não queria tirar o foco do vídeo. Porém, você pode utilizar uma tabela criada manualmente juntamente com o campo ManyToManyField. Inclusive, eu tenho um vídeo onde falo sobre o relacionamento manytomany. É antigo, mas acho que vai te ajudar. kzbin.info/www/bejne/n4vSlaWLes-BZqc Depois dá seu feedback e me diga se esclareceu sua dúvida. Abraço.
@FAELP22
@FAELP22 3 жыл бұрын
Você cadastrou todos esses 8000 registro de forma individual ou usou algum gerador de dados? vlw pelo vídeo.
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Eu cadastrei usando um loop for. E só concatenei o nome mais o número. rsrsrs Muito obrigado. Abraço.
@fabioacarvalho
@fabioacarvalho Жыл бұрын
Nesse caso do select related eu consigo acessar apenas o campo empresa? Ou teria acesso a mais campo?
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Terá acesso a todos os campos que estão no objeto empresa.
@dkarllus
@dkarllus 2 жыл бұрын
Muito bom
@SamuelGoncalvesPython
@SamuelGoncalvesPython 2 жыл бұрын
Valeu demais, Diego. Abraço.
@Vicmendon
@Vicmendon 3 жыл бұрын
Muito bom!
@SamuelGoncalvesPython
@SamuelGoncalvesPython 3 жыл бұрын
Muito obrigado, camarda. Abraço.
@ronaldosilveiradev
@ronaldosilveiradev Жыл бұрын
Muito bom
@SamuelGoncalvesPython
@SamuelGoncalvesPython Жыл бұрын
Muito obrigado, Ronaldo. Abraço.
Relacionamento OneToOne nos modelos do Django
15:32
Samuel Gonçalves
Рет қаралды 2,2 М.
Como criar actions customizadas no Django Admin
14:53
Samuel Gonçalves
Рет қаралды 1,8 М.
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
Formulários Bootstrap no Django com Crispy Forms
10:59
Samuel Gonçalves
Рет қаралды 6 М.
Resolução avaliação do dia 18/12 - IFSC Câmpus Gaspar
32:05
Como colocar permissão personalizada por usuário no Django Admin
16:42
Samuel Gonçalves
Рет қаралды 4,4 М.
How to Write Complicated Queries in Django With F Expressions
10:44
Pretty Printed
Рет қаралды 16 М.
Fazendo validações personalizadas nos formulários do Django
18:19
Samuel Gonçalves
Рет қаралды 4,6 М.
Melhore a performance das suas aplicações | DJANGO CACHE
33:19
pythonando
Рет қаралды 3,8 М.
Entendendo os atributos null=True e blank=True nos modelos do Django
18:33
Django ModelForm - A melhor maneira de fazer formulários
21:42
Samuel Gonçalves
Рет қаралды 13 М.
Como fazer campos CIDADE e ESTADO no Django Admin.
9:22
Samuel Gonçalves
Рет қаралды 2,3 М.
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН