Corey Schafer
Coding Tools and Developer Platforms with a focus on Python web frameworks and database integration.
Nutrition Label
Corey Schafer provides structured, code-heavy tutorials for Python developers building web applications. Viewers can expect a mix of deep theoretical explanations and practical implementation, though the pacing of instruction can shift as series progress.
Strengths
- +
- +
- +
Notes
- !Instructional style varies between deep live-coding sessions and faster code-pasting segments.
- !Review the video description for project files and direct support links like Patreon.
Rating Breakdown
Breakdown across the key dimensions we rate. Methodology →
Recent Videos

Python FastAPI Tutorial (Part 12): File Uploads - Image Processing, Validation, and Storage

Python FastAPI Tutorial (Part 11): Authorization - Protecting Routes and Verifying Current User

Python FastAPI Tutorial (Part 10): Authentication - Registration and Login with JWT

Python FastAPI Tutorial (Part 9): Frontend Forms - Connecting JavaScript to Your API

Python FastAPI Tutorial (Part 8): Routers - Organizing Routes into Modules with APIRouter

Python FastAPI Tutorial (Part 7): Sync vs Async - Converting Your App to Asynchronous

Python FastAPI Tutorial (Part 6): Completing CRUD - Update and Delete (PUT, PATCH, DELETE)

Python FastAPI Tutorial (Part 5): Adding a Database - SQLAlchemy Models and Relationships

Python FastAPI Tutorial (Part 4): Pydantic Schemas - Request and Response Validation

Python FastAPI Tutorial (Part 3): Path Parameters - Validation and Error Handling

Python FastAPI Tutorial (Part 2): HTML Frontend for Your API - Jinja2 Templates

Python FastAPI Tutorial (Part 1): Getting Started - Web App + REST API
Why this rating
Evidence receipts showing why each dimension is rated the way it is.
“401 is unauthorized... that means that you're not authenticated... 403 means that you are authenticated but you don't have permission for this action. And this difference matters for API clients because it tells them whether to log in or whether they're trying to do something that they're simply not allowed to do.”[11:03] →
The creator provides a precise technical distinction between HTTP status codes 401 and 403, explaining the practical implications for API client design.
“We can see here that we are not authorized to update this post because that was created by the first Corey user... and not this test user. So we do not get a 401 because we are logged in, what we're getting is a 403 forbidden.”[19:30] →
The creator explicitly tests the failure mode by logging in as a different user and attempting to modify content they do not own, proving the authorization logic works as intended.
“SQLite doesn't make it easy to add non-nullable columns to existing tables... In development, it's usually easiest just to start fresh.”[04:35] →
The creator encounters a real-world database limitation during development and demonstrates the practical workaround (deleting the database file) rather than editing out the friction.
“Standard creator support links provided without corporate sponsorship disclosures: 'Support My Channel Through Patreon... Equipment I Use and Books I Recommend [Amazon Links]'”[Description] →
“So this could get a little repetitive here, so instead I'm just going to paste in the rest of the routes one by one and I'll call out key things as we go.”[17:04] →
Acknowledges the potential tedium of refactoring multiple routes and adjusts the pacing to keep the viewer engaged while still showing the necessary code changes.
“He justifies architectural decisions rather than just following trends: "You might be wondering why do we need separate models and schemas... SQLModel is a great concept... but for learning purposes... keeping those separate means we can change one without affecting the other."”[02:06] →