FastAPI with SQLModel, Alembic and Authentication. Full Course

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 พ.ย. 2024

ความคิดเห็น • 48

  • @danisidiatullin9818
    @danisidiatullin9818 2 ปีที่แล้ว +11

    Thank you for the tutorial, Evgeny. Could you explain how to write tests with fastapi, sqlmodel and postgres in the next tutorials? Especially I want to know how to manage and isolate test database from project database.

  • @vladimirkuzmin2232
    @vladimirkuzmin2232 2 ปีที่แล้ว +5

    Thank you for explanation! Definitely giving that approach a shot. Great video quality by the way.
    Best wishes, my friend

  • @evgenyocean426
    @evgenyocean426 2 ปีที่แล้ว +4

    Yo! Learned a lot from the video. The progressive learning approach is my favorite, keep up the good work, man!

    • @Redonick
      @Redonick 2 ปีที่แล้ว

      Santo Expedito não tem uma data de nascimento conhecida. Sabe-se que ele era Romano. Sabe-se também que foi Senador de Roma, Príncipe-Consul do Império Romano na Armênia, militar, Comandante da XII Legião Romana e, mesmo nessa condição, converteu-se ao cristianismo.
      História de Santo Expedito
      A XII Legião tinha o nome de Fulminata, nome que significa algo como Vem como um raio. A Fulminata tinha cerca de 8 mil homens contando soldados, escravos e cavaleiros. No tempo de Expedito, ela defendia as fronteiras orientais do Império Romano contra os bárbaros asiáticos. Expedito comandou a XII Legião de 296 a 303 d. C. Para ser comandante de uma Legião Romana era preciso muita competência e bravura. Tanto que, alguns anos antes, a mesma XII Legião tinha sido comandada por um Imperador romano, Marco Aurélio, numa campanha onde hoje é a Eslováquia. Sabe-se que Expedito era um líder competente. Seu cargo equivaleria hoje ao de um general. Ele se tornou famoso por manter a disciplina dos soldados e todos o respeitavam. Por outro lado, como a maioria dos soldados romanos, o Comandante Expedito tinha uma vida devassa, rodeada de luxo, prazeres e fama.
      Conversão ao Cristianismo
      O primeiro contato do Comandante Expedito com o Cristianismo aconteceu dentro da própria XII Legião. Com efeito, uma parte dos soldados da XII era formada de cristãos. Além disso, em suas andanças pelas fronteiras orientais do império, Expedito teve ainda mais contato com o cristianismo. E, para completar, a XII Legião teve um soldado chamado Polieucto de Melitene, que morreu mártir no ano 193. A semente do Cristianismo e do sangue dos mártires nunca cai na terra em vão.
      A Procrastinação de Santo Expedito
      Expedito era um líder competente na condução da XII Legião tanto nos tempos de paz quanto nas batalhas. Um comandante vitorioso na carreira militar. Porém, quanto à sua vida espiritual, tinha o vício da procrastinação, isto é, deixar para depois, adiar. Ele simpatizava com a mensagem de Jesus. Admirava os ensinamentos do Mestre de Nazaré e via no Evangelho palavras que ninguém jamais tinha dito antes na história humana. Por isso, ele pensava em um dia converter-se de verdade. Esse dia, porém, ficava sempre para mais tarde, era sempre adiado.
      O toque de Deus
      Depois de alguns anos procrastinando, Expedito foi tocado pela graça de Deus. Certa noite teve um sonho que mudou sua vida. No sonho, com um corvo representando o espírito do mal, grasnava diante dele a palavra cras, do latim, que significa amanhã, deixe sua conversão para amanhã. O corvo grasnava forte e parecia poderoso. Porém, de repente, Expedito decidiu e pisoteou o corvo dizendo: hodie, que significa hoje, em latim. O Comandante Expedito acordou do sonho decidido e confirmou sua conversão. Por isso ele é considerado o Santo das causas urgentes. Convertido, ele continuou por um tempo ainda chefe da sua legião, conseguindo converter seus soldados também ao cristianismo.
      A ira contra Santo Expedito
      Com a conversão de Expedito e da sua tropa, o imperador Diocleciano começou a perseguir o Santo e seus soldados. A importância de seu posto fazia dele uma influência muito forte a favor do Cristianismo dentro do Império Romano. Por isso, ele se tornou alvo especial do Imperador.
      A Morte de Santo Expedito
      Santo Expedito foi preso pela ordem de Diocleciano e foi forçado a renunciar à sua nova fé. Porém, ele não renunciou. Seus castigos começaram pela flagelação romana: 39 chicotadas com o flagrus, chicote que dilacera a pele e causa hemorragia. Expedito tinha aplicado este mesmo castigo a bandidos e indisciplinados. Agora, ele os recebia por causa de Jesus Cristo. E ele permaneceu firme e julgando-se indigno de sofrer o mesmo castigo que Jesus sofrera, aplicado por soldados romanos, como estava acontecendo com ele. Por fim, não renunciando à sua fé, Santo Expedito foi decapitado com espada, por ordem do Imperador Diocleciano, no dia 19 de abril de 303, em Melitene na Armênia.
      Canonização
      Como Santo Expedito foi morto por causa de Jesus Cristo, ele se tornou um mártir da Igreja e santo reconhecido oficialmente. Sua bravura diante dos sofrimentos por causa da fé serviu de exemplo para grande parte dos soldados de sua Legião, fazendo-os permanecer firmes em sua fé. O exemplo de Santo Expedito arrastou milhares de cristãos na Armênia e, logo, ele passou a ser venerado como santo, o santo das causas urgentes.
      Imagem de Santo Expedito
      Santo Expedito é representado como um Comandante Romano, vestindo uma túnica branca, uma armadura de superior e um manto vermelho sobre os ombros. Em sua mão direita ele levanta uma cruz com a palavra Hodie (Hoje). Na mão esquerda ele tem uma palma, representando o martírio e a vitória dos mártires. Seu pé direito pisa sobre um corvo, que grita a palavra Cras, (amanhã). A imagem simboliza a grande mensagem de Santo Expedito: Não adie sua conversão, não deixe para amanhã aquilo que deve ser feito hoje, não procrastine!
      Oração de Santo Expedito
      A PODEROSA ORAÇÃO DE SANTO EXPEDITO
      Meu Santo Expedito das Causas Justas e Urgentes.
      Socorrei-me nesta hora de aflição e desespero, interceda por mim junto ao Nosso Senhor Jesus Cristo.
      Vós que sois um Santo guerreiro.
      Vós que sois o Santo dos aflitos.
      Vós que sois o Santo dos desesperados.
      Vós que sois o Santo das causas urgentes.
      Protegei-me. Ajudai-me. Dai-me força, coragem e serenidade.
      Atendei ao meu pedido. (fazer o pedido).
      Ajudai-me a superar estas horas difíceis, protegei-me de todos que possam me prejudicar.
      Protegei minha família, atendei o meu pedido com urgência.
      Devolva-me a paz e a tranquilidade.
      Serei grato pelo resto de minha vida e levarei seu nome a todos que tem fé.
      Santo Expedito, rogai por nós. Amém.

  • @joshuamarcano350
    @joshuamarcano350 2 ปีที่แล้ว +2

    I agree with what you say about the fast api videos I came to yours based on the chapter topics you have below.

  • @Play_Streams
    @Play_Streams 2 ปีที่แล้ว +7

    Great video, if only you could zoom in more on your IDE. Text is a bit small.

  • @jovid6410
    @jovid6410 ปีที่แล้ว +1

    An amazing tour from amazing lad, well done! However, how can I make an atomic transaction with SQLModel orm? If it is possible please make more videos about SqlModel orm.

  • @picassoofai4061
    @picassoofai4061 ปีที่แล้ว

    I've seen the source code and Im very excited now.

  • @paolo-e-basta
    @paolo-e-basta 2 ปีที่แล้ว +1

    hello! amazing tutorial, clears a lot of doubts. please do more... How could be implemented a token blacklist/invalidation strategy, if it worth to do that? And... token refresh too would also be awesome to see how it could beimplemented. huge thanks

  • @lianakalpakchyan4454
    @lianakalpakchyan4454 9 หลายเดือนก่อน

    I just wanted to press like again and again

  • @arsennersesian9355
    @arsennersesian9355 2 ปีที่แล้ว +2

    Thank you, Evgeny!

  • @JorgeGonzalez-jo3zv
    @JorgeGonzalez-jo3zv 2 ปีที่แล้ว +2

    Nice!!!
    Thank you!

  • @arturocdb
    @arturocdb 2 ปีที่แล้ว +1

    Thank you, you have all reason…, all videos out there are improvisation.., not useful…. Great idea make useful video

  • @РоманМалинин-д3е
    @РоманМалинин-д3е 2 ปีที่แล้ว +1

    Very good. Thank you

  • @w000fz
    @w000fz 2 ปีที่แล้ว

    Love your works! Keep on going! :)

  • @КириллКулаков-т7г
    @КириллКулаков-т7г 2 ปีที่แล้ว

    a big thx for this tutorial!
    but why you don't use async func?

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +3

      thanks for the comment!
      I actually just wanted to keep things simple for beginners this time and maybe later release video that would go into async + http 2.0 and other stuff I didn't cover in this video.

    • @КириллКулаков-т7г
      @КириллКулаков-т7г 2 ปีที่แล้ว +1

      @@evgenymaksimov that would be great! I'm looking forward to it.

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +1

      @@КириллКулаков-т7г hi! it's been a while but I just published video about best async practices in fast Api, feel free to check it out :)

  • @rosschan3453
    @rosschan3453 2 ปีที่แล้ว +1

    thank you

  • @shubhamgupta7652
    @shubhamgupta7652 2 ปีที่แล้ว

    Hi,
    update the gem end point for 'get('/gem/{id}' JSONResponse(status_code=HTTP_404_NOT_FOUND,content="Record not found")
    if we don't give content it will give error, after putting content in JSONResponse it started working

  • @SanthoshAC-p3s
    @SanthoshAC-p3s 11 หลายเดือนก่อน

    I have a question regarding sqlmodel and pydantic. I created a class based on sqlmodel, and now I want to use that for data validation using pydantic @validator (decorotor) and perform an ORM operation. So how do I do it?

    • @evgenymaksimov
      @evgenymaksimov  11 หลายเดือนก่อน

      easy, in the model create a method, it should be something like
      @validator('your_field_name', pre=True)
      def convert_to_number(cls, v):
      return float(v)
      or raise something here if v isn't what's needed.
      then as you create an instance of model, validation on set field automatically applies

  • @pythonantole9892
    @pythonantole9892 2 ปีที่แล้ว +2

    I wish you cold zoom into your code editor. One can hardly see the code.

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +1

      Hi! The video is just uploading currently, please revisit it in an hour, HD is just getting processed by youtube! It wll be up to 1440p! Thanks

  • @mariusj8542
    @mariusj8542 2 ปีที่แล้ว

    I came here for the same reasons as you. The topics are spot on, but the text is very small, you should run the next videos with a much larger font. Very difficult to see what you write

  • @pythoneer44
    @pythoneer44 2 ปีที่แล้ว +1

    🤯

  • @jijojoseph8721
    @jijojoseph8721 2 ปีที่แล้ว

    53:13 i was running the program in vs-code and for me a weired eroor came like ModuleNotFoundError: No module named 'main', took me a long time to figure out what is going wrong. looks like its part of relative imports and found a solution like when we run the code for gem_repository we should run it as a module like , python -m repos.gem_repository while we are in the main parent folder

    • @jijojoseph8721
      @jijojoseph8721 2 ปีที่แล้ว

      as i was following the tutorial along i saw you too had the issue of circular import, and how you have solved the same

  • @xr1140
    @xr1140 2 ปีที่แล้ว

    Why did you defined the properties as a separated class from gem class and also, why two tables in the db for storing a gem?

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +1

      Good question! Since our price is defined by gem properties and gem type, if we put them all in one table we will have transitive functional dependency, which might not be ideal. If we want db normalized to 3NF , then we must get rid of that dependency. Plus we can reuse same gem properties row for other gems, in case they are the exact same, which I'm not doing here, but it might save some space in a large database. Hope it answers your question!

    • @xr1140
      @xr1140 2 ปีที่แล้ว +1

      @@evgenymaksimov Thank you! I'm off to Google cu see what "transitive functional dependency" and "db normalized to 3NF" mean... hope for your sake is not something about my mom! :D

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +1

      @@xr1140 ahaha, good luck diving into database normalization !

  • @shubhamgupta7652
    @shubhamgupta7652 2 ปีที่แล้ว

    Hi
    one quick question what you suggest to use for UI bootstrap or other ?

    • @pumpkinthestrange1
      @pumpkinthestrange1 2 ปีที่แล้ว +1

      really a matter of preference, nothing else. I use material-ui more often, some people are fans of tailwind, bootstrap is a classic yep

  • @osogrande4999
    @osogrande4999 ปีที่แล้ว +4

    text is FAR too small. 99% wasted screen space, 1% tiny tiny tiny text. Why do youtubers still not get it?

    • @evgenymaksimov
      @evgenymaksimov  ปีที่แล้ว +3

      I'm about as much of "youtuber" as you are.That was literally my first video ever made, sorry I wasn't born a video producer.

  • @shubhamgupta7652
    @shubhamgupta7652 2 ปีที่แล้ว

    Hi,
    I have followed all steps but in ID i am getting NULL it should be 1..or some integer
    can you explain what went wrong?

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว +1

      make sure the id field is set to be a primary key. It should be like at 36:47. Try dropping the existing row and create it again, and don't specify id explicitly.

    • @shubhamgupta7652
      @shubhamgupta7652 2 ปีที่แล้ว +1

      @@evgenymaksimov thanks it worked , I was making two field as primary in same table, that's why it is placing NULL for ID.

  • @pipi_delina
    @pipi_delina 2 ปีที่แล้ว

    The aspect is too small

  • @arturocdb
    @arturocdb 2 ปีที่แล้ว +1

    Too small friend, next time you have to zoom it, thank you

    • @evgenymaksimov
      @evgenymaksimov  2 ปีที่แล้ว

      Yes I realized it's too small for mobile view afterwards... My newer videos are all zoomed in/larger font, you're welcome to subscribe haha. Thanks for the comment

  • @theblack5416
    @theblack5416 5 หลายเดือนก่อน

    Zoom the screen abit.

  • @jackymarcel4108
    @jackymarcel4108 2 หลายเดือนก่อน

    White Edward Thompson Frank Wilson Mary

  • @ivan_inanych
    @ivan_inanych ปีที่แล้ว

    Мог бы и на русском говорить

  • @aiornerok3931
    @aiornerok3931 ปีที่แล้ว

    Жека го на русском)

  • @pythoneer44
    @pythoneer44 2 ปีที่แล้ว