How to build a FastAPI app with PostgreSQL

Поділитися
Вставка
  • Опубліковано 21 лип 2024
  • In this FastAPI PostgreSQL + pgAdmin video, we'll delve into FastAPI, a powerful python web framework and SQLAlchemy, a SQL toolkit that enhances the flexibility of SQL. You'll learn how these two integrate, creating a potent duo for web development with a professional PostgreSQL database.
    Our guide includes a quick overview of PostgreSQL and pgAdmin, an open-source database system and its web-based administration tool, ensuring top-notch database management.
    Finally, we'll cover Pydantic for data validation and parsing, a vital component for any robust FastAPI application working with PostgreSQL.
    By the end of this video, you'll have the knowledge to build a FastAPI application, utilizing SQLAlchemy, PostgreSQL, pgAdmin, and Pydantic.
    🎥 React + FastAPI: • How to build a React +...
    🎥 AWS Lambda + FastAPI: • Deploy FastAPI on AWS ...
    🎥 MongoDB + FastAPI: • Unlocking the Power of...
    🎥 MySQL + FastAPI: • How to build a FastAPI...
    ===========================
    🎓 Courses can be found:
    FastAPI Beginner & Advanced: www.udemy.com/course/fastapi-...
    Learn Chatbot Development: www.udemy.com/course/the-comp...
    ===========================
    🛒 GEAR & RECOMMENDED BOOKS: kit.co/codingwithroby
    ⌚️Timestamps:
    0:00 Introduction
    01:00 FastAPI, SQLAlchemy, uvicorn, pydantic installation
    03:00 Start FastAPI Application
    07:00 Create PostgreSQL connection
    07:45 pgAdmin GUI
    11:00 Create PostgreSQL Tables
    16:00 Connect FastAPI, PostgreSQL with SQLAlchemy
    17:00 FastAPI API Endpoints
    Happy coding!
    #codingwithroby #fastapi #postgresql

КОМЕНТАРІ • 84

  • @user-gv4tt6sm7r
    @user-gv4tt6sm7r 9 місяців тому +1

    Erck tu ejemplo me ayudo a entender mejor FastApi he visto varios videos y el tuyo es uno de los mejores que los explica, sencillo y al grano, gracias!

  • @NobixLee
    @NobixLee Місяць тому

    Watching on my phone, can’t wait to follow along I actually need to fully understand this for work. Thanks man

  • @pipe3194
    @pipe3194 10 місяців тому +5

    Great job! 🎉 I really appreciate clears and directs explanations like this one

    • @codingwithroby
      @codingwithroby  10 місяців тому

      Woot woot! I am so glad you were able to find some value. Cheers!!!

  • @lotusmojo
    @lotusmojo 4 місяці тому +1

    Great job buddy!.. very clear and concise

  • @user-uf3xl5un3p
    @user-uf3xl5un3p 7 місяців тому

    Thank you so much! Very detailed explanation!

  • @aviraltiwari3412
    @aviraltiwari3412 Рік тому +2

    Great video. Lot of quality of content. Very informative! I'd suggest creating videos related to CORS, that would be great!

  • @elykou4843
    @elykou4843 10 місяців тому

    Mine works now.What a great teacher .thanks you too much.

  • @mattmarshall1834
    @mattmarshall1834 4 місяці тому +2

    Great tutorial. Very quick and to the point. It would be interesting to see a video about releasing a FastAPI/React/Postgres application to AWS or GCP.

  • @DIVYANAMBIAR-by7om
    @DIVYANAMBIAR-by7om 2 місяці тому

    Thank you, Eric. Really helpful

  • @cesardavidmillan6648
    @cesardavidmillan6648 9 місяців тому +1

    It was a great tutorial! even though I made a few changes while watching the tutorial! way to go!

  • @ibrahimshazly9580
    @ibrahimshazly9580 24 дні тому +1

    Hi, Mr Roby
    on 14:30
    i am wondering why you didn't add
    question = relationship("Question") # Establish relationship
    to choices model
    ---
    and thanks for your tutorial

  • @vandanadubey2315
    @vandanadubey2315 8 місяців тому

    Great Video Eric , Thank you

  • @rafiali7315
    @rafiali7315 6 місяців тому +1

    i watched your three times but i am got same error my question pass in db perfectly but choices doesnt put,

  • @trixer230
    @trixer230 3 місяці тому

    I would love this tutorial but showing how to use relationships. For instance how would you make it pull all the answers automagically when the question is pulled?

  • @shotihoch
    @shotihoch 3 місяці тому

    Absolute usefull tutorial. Found it... ughhh finally. Thank you! It was pretty hard to understand db_dependency = Annotated[Session, Depends(get_db)] logic, but with gpt i think I got it. Didnt get about async without await thing.... but I just think it some kind of inner processes of FastAPI requires it. Anyways thank you!

  • @mrkzmusic
    @mrkzmusic 8 місяців тому

    Thanks a lot Eric!

  • @fahdagodzo5795
    @fahdagodzo5795 3 місяці тому +1

    thanks, it's been helpful

  • @muhammadnajamulislam2823
    @muhammadnajamulislam2823 6 місяців тому +1

    very nice and easy way of teaching

  • @domingotrejo4554
    @domingotrejo4554 9 місяців тому +1

    in a production project the lines of create_all and Annotated go ouside of endpoints, are a good practice ?

    • @codingwithroby
      @codingwithroby  9 місяців тому

      I would probably use migrations and have a deployment script do it, but for small/medium sized applications, absolutely!

  • @juandelgado6201
    @juandelgado6201 5 місяців тому

    Can you share github repo with that project ?

  • @raulmedrano9818
    @raulmedrano9818 9 місяців тому +1

    thanks excellent job

    • @codingwithroby
      @codingwithroby  9 місяців тому

      Glad you were able to find value 🙂

  • @fatti.casuali
    @fatti.casuali 10 місяців тому +1

    Hi! Can anyone help me? I would like to have a GET endpoint that returns a JSON like this:
    {
    "question_text": "question",
    "choices": [
    {
    "choice_text": "answer1",
    "is_correct": true
    },
    {
    "choice_text": "answer2",
    "is_correct": false
    },
    {
    "choice_text": "answer3",
    "is_correct": false
    },
    {
    "choice_text": "answer4",
    "is_correct": false
    }
    ]
    }
    How do I do it? It seems like I can't select the columns I want even if the query seems right:
    print(select(Questions, Choices).where(Questions.id == Choices.question_id))
    SELECT questions.id, questions.question_text, choices.id AS id_1, choices.choice_text, choices.is_correct, choices.question_id
    FROM questions, choices
    WHERE questions.id = choices.question_id
    Thanks for the help!

    • @codingwithroby
      @codingwithroby  10 місяців тому

      If you want this all in a single JSON, I would suggest creating another Python object that holds a String along with the choices objects, query the DB and place the info accordingly with the object you are returning.

    • @elykou4843
      @elykou4843 10 місяців тому

      Post IS where you creat every thing'Just past it in thé post Doc and get it in thé get questions.

  • @thegreekgoat98
    @thegreekgoat98 Рік тому +5

    It would have been much better if you have explained the logic behind the lines and what it does more clearly especially in database part.

  • @dipanjansaha6824
    @dipanjansaha6824 11 місяців тому +1

    Coming from MVC background! How about we put the files into a production grade folder 📂 structure?

    • @codingwithroby
      @codingwithroby  11 місяців тому

      The idea here was to simply show how to setup FastAPI with PostgreSQL. I appreciate your feedback🙂

    • @metinEsturb
      @metinEsturb 8 місяців тому

      @dipanjansaha6824: how would this structure that you mention look like? Do you have any reconmendations?

  • @goswami_himanshu
    @goswami_himanshu 10 місяців тому +1

    Great tutorial Eric.
    If you can create a video on slightly complex project using fastAPI and postgreSQL i'll watch it even if it's 3 hours long
    Btw you don't have to import List from typing anymore. New versions of python provides this already with the name list

    • @codingwithroby
      @codingwithroby  10 місяців тому +1

      Thanks for the suggestion! What exactly are you wanting to see so I have a better understanding 🙂

    • @parnika2277
      @parnika2277 10 місяців тому +1

      @@codingwithroby maybe a program that has 2 tables one for student info and one for student marks and then you calculate things like average, grade, etc

  • @owaisahmed2063
    @owaisahmed2063 Місяць тому

    pgadmin video link please

  • @Anteater23
    @Anteater23 Місяць тому +1

    Great video

  • @ledieuduballonrond456
    @ledieuduballonrond456 5 місяців тому

    Hi Eric I hope you're doing well,
    I have a slight issue when I paste the URL on my browser i keep getting "detail" : "not found". If anyone could help me please ?

    • @mattmarshall1834
      @mattmarshall1834 4 місяці тому

      What is the url that you are pasting? If you past the localhost url without anything after it the "detail":"not found" message will appear.

    • @ledieuduballonrond456
      @ledieuduballonrond456 4 місяці тому

      So what should I paste ?

  • @Tommy-and-Ray
    @Tommy-and-Ray 6 місяців тому +1

    Great video. Could you share the repo link by any chance please?

    • @codingwithroby
      @codingwithroby  6 місяців тому

      Hey friend, for this video I never saved the repo. Sorry!

  • @tihomirkamenov2862
    @tihomirkamenov2862 7 місяців тому

    Awesome video!
    p.s. An async function without an await expression will run synchronously :)

    • @codingwithroby
      @codingwithroby  7 місяців тому

      Nice addition!

    • @AzharRafiq
      @AzharRafiq 6 місяців тому

      when we should use async vs def only?

    • @tihomirkamenov2862
      @tihomirkamenov2862 6 місяців тому

      Typically, async returns another async def most of the time (with await) until it reaches the final stage - any data from database, message, string, int etc. On the last stage the def should be also async but it will return with no await
      So in this case, @codingwithroby is correct, my mistake! @@AzharRafiq
      However, we use async def to avoid big delays when fetching data. This allows the program to switch between multiple tasks without blocking the main thread.

  • @iVentusHD
    @iVentusHD 11 місяців тому

    HELLO PLEASE, i need you're help i followed the tuto exactly but when i want to launch the API i have an error "from sqlalchemy import Session
    ImportError: cannot import name 'Session' from 'sqlalchemy'"

    • @codingwithroby
      @codingwithroby  11 місяців тому

      Hey friend! How is it going? Let's figure out what is going on here. When are you doing this? It should be session maker if you are adding: from sqlalchemy.orm import sessionmaker

    • @iVentusHD
      @iVentusHD 11 місяців тому

      @@codingwithroby hey, the ImportError is Gone but when i do the Post endpoint they add null data to the database (i try to make my own api with user and when i post an user i can see the ID in database but all of the other data is null)

    • @codingwithroby
      @codingwithroby  11 місяців тому

      @@iVentusHD What does your Python method look like?

  • @timothyatanda1188
    @timothyatanda1188 6 місяців тому +1

    Eric, please do you have the completion of this tutorial in your Udemy class with the topic "Fastapi- The Complete Curse 2024 (Beginners+Avanced)? i mean the aspect of the delete, get _by_id and update"🙏

    • @codingwithroby
      @codingwithroby  6 місяців тому

      It is not exactly this tutorial, but it shows how to do almost everything 🙂

    • @codingwithroby
      @codingwithroby  6 місяців тому

      I am confident it will have what you are looking for

  • @AxlRoseGVillanueva
    @AxlRoseGVillanueva 3 місяці тому

    Greate tutorial!! how can we update database if we made changes from models? I really appreciate!

    • @codingwithroby
      @codingwithroby  3 місяці тому

      You will want to use something like Alembic. If it is a brand new app, you can delete the db and let SQLAlchemy recreate a new one for you.

  • @snir109
    @snir109 Рік тому

    Thank you

  • @VeejayRampay
    @VeejayRampay 4 місяці тому

    class with a plural name are bad form but this is a nice video, props

  • @timothyatanda1188
    @timothyatanda1188 7 місяців тому

    What a comprehensive tutorial video, that was amazing!
    please do you have a class on Udemy where i can learn from you very well?

    • @codingwithroby
      @codingwithroby  7 місяців тому

      Yes I do! Link is in description 🙂

  • @notalanjoseph
    @notalanjoseph 8 місяців тому

    How to host this on render?

    • @codingwithroby
      @codingwithroby  8 місяців тому

      Render is one option and another option is AWS. I have a video on AWS deployment you may be interested in.

  • @nehagawande1377
    @nehagawande1377 11 місяців тому +1

    can you share code

    • @codingwithroby
      @codingwithroby  11 місяців тому +2

      I do not have this code specifically anymore, but I can definitely look into keeping all code from my UA-cams.

  • @akashsoni7925
    @akashsoni7925 7 місяців тому

    Create something like this
    1) user registration in FastAPI ( Using two database PostgreSQL and MongoDB )
    Registration fields - Full Name,Email,Password,Phone,Profile_picture
    First Name,Password,Email,Phone - postgreSQL
    Profile picture - MongoDB
    Check Email already exist
    2) user registration in fastAPI ( Using postgreSQL )
    Registration fields - Full Name,Email,Password,Phone,Profile_picture
    Create table Users to store : First Name,Password,Email,Phone
    Create table Profile to store : Profile_picture
    Check Email , Phone already exist