full-stack-fastapi-postgresql
aiosql
Our great sponsors
full-stack-fastapi-postgresql | aiosql | |
---|---|---|
23 | 9 | |
12,050 | 1,171 | |
- | - | |
0.0 | 9.2 | |
16 days ago | 5 days ago | |
Python | Python | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
full-stack-fastapi-postgresql
- Is there any open source project that uses FasAPI?
-
How to build a scalable project file structure for a beginner.
I've just recently switched to a structure that follows Netflix's Dispatch application after starting with https://github.com/tiangolo/full-stack-fastapi-postgresql and it feels way better and organized.
- ORM for FastAPI+PostgreSQL, Tortoise or Sqlalchemy? what would you choose and why?
-
FastAPI Best Practices
I would encourage you to take a look at this repo: https://github.com/tiangolo/full-stack-fastapi-postgresql This is a boilerplate of an application made with fastapi, prepared by the creator of the fastapi himself. You can even set it up yourself locally and have a look how it’s organised. I know it has a lot of different services included, but I find the fastapi part itself to be well thought. Inside the api directory you can notice another folder named api_v1, so you can have multiple versions of your API routes when needed, with the general code in other places that is more generic and can be reused in all your different API versions. The schemas are separated from the models and models itself have different classes depending on what you would actually like to do with the data. The migrations are managed with alembic based on schemas rather than models itself. The settings are a python class that implicitly reads the .env file in your project’s directory. And many, many other interesting patterns to explore. Too much to write in one comment to be honest.
-
Is there public repo showing production level code of REST APIs using FastAPI
Have a look at Full Stack FastAPI and PostgreSQL - Base Project Generator
While that is a good base, it can be a bit outdated in places. I would suggest checking out this issue on the topic
-
I wrote an alternative for the official FastAPI full stack project generator (more info in comment)
Hi, earlier this year I built a project using the official FastAPI full stack example. While working on my project, I realised that the FastAPI ecosystem has matured a lot since that template was created and many things that I ended up writing code for was already solved by others. And I didn't want to keep reinventing the wheel.
- Suggest a learning Docker project
- Best method to use docker in dev, test, and production
-
FastAPI framework, high perf, easy to learn, fast to code, ready for production
I'm glad you're liking FastAPI!
You could check the official project generator, it includes a simple Vue.js front end: https://github.com/tiangolo/full-stack-fastapi-postgresql
Although I'm currently using React with TypeScript and hooks, and it's a great development experience. I plan on adding it to the project generator later.
aiosql
-
Project template without ORM
I prefer to use aiosql https://nackjicholson.github.io/aiosql/ to organize my SQL and have it in a SQL folder. It looks like this where colons specify variables:
-
If you could choose any Python web framework to build APIs for a startup, which one would you choose and why?
I tend to do a lot of data-heavy projects, so I tend to eschew ORM-style code and use a project called aiosql to bind raw SQL to python methods, and offload as much expensive computation to the DB as possible. If I'm prototyping an endpoint (e.g. calculating percentiles for some midsized time-series data), and just need a non-performant working placeholder, it's extremely easy to dump a SQL table to pandas and yeet something together in a few lines - then smoothly replace it with a more performant SQL query down the road. Highly contextual move, but I find it to be an awesome balancing point between flexibility, scalability, performance, productivity, etc.
-
Which not so well known Python packages do you like to use on a regular basis and why?
As one of the rare Python developers who actually like SQL, my favourite database library is aiosql
-
The Data-Oriented Design Process for Game Development
I've been doing something in this vein for a big personal project, using this python library: https://nackjicholson.github.io/aiosql/.
In short, I'm using a run of the mill stack (Caddy/Gunicorn/Flask/Postgres) - but with the twist that all my core logic is defined in plaintext SQL files, which get bound into namespaced Python methods by aiosql. Routing, error handling, templating, etc. are all done in Python - but all data manipulation and processing are outsourced to the DB level. All database object definitions are laid out in a massive, idempotent "init_db" method that gets called at launch, so I can essentially point the app at a fresh instance of Postgres and rebuild from scratch. The design is primarily driven by my personal distaste for ORMs, but I've found it extremely beneficial in terms of rigid typing, integrity checks, and performance.
-
Is it bad practice for my flask API to run raw SQL queries against my DB to get/post data?
Definitely check out https://nackjicholson.github.io/aiosql/ if you want to stick with SQL
Have a look at this library: https://nackjicholson.github.io/aiosql/ It lets you keep your SQL queries in separate files and handles all of the parameterising for you.
-
Django 4.0 release candidate 1 released
I took that approach on my latest Flask project and it’s gone quite swimmingly. The problem I ran into was that a lot of the ecosystem, and therefore documentation, blog posts, helper libraries, etc., are all written under the assumption that you’re using an ORM. It took a while to figure out how to work around that, but once I did, I was home clear.
I also used a helper library to automatically map namespaced .sql files onto python functions with various return types, which made the development process way more elegant: https://nackjicholson.github.io/aiosql/. Absolute game changer if you plan to go this route - can’t recommend it highly enough.
-
FastAPI framework, high perf, easy to learn, fast to code, ready for production
I've been using FastAPI for some time, and now I'm using it as a full web framework (not just for REST APIs). I like writing SQL without ORMs, so the combination of aiosql[0] + FastAPI + Jinja2 works great. Add HTMX[1] and even interactive websites become easy.
That's in fact the stack I am using to build https://drwn.io/ and I couldn't enjoy it more.
Thanks Sebastián for creating it!
What are some alternatives?
fastapi-react - 🚀 Cookiecutter Template for FastAPI + React Projects. Using PostgreSQL, SQLAlchemy, and Docker
fastapi-starter - A FastAPI based low code starter/boilerplate: SQLAlchemy 2.0 (async), Postgres, React-Admin, pytest and cypress
uvicorn-gunicorn-fastapi-docker - Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python with performance auto-tuning. Optionally with Alpine Linux.
cookiecutter-djangopackage - A cookiecutter template for creating reusable Django packages quickly.
fastapi-users - Ready-to-use and customizable users management for FastAPI
docker-celery-flower - Minimum docker/fastapi/celery/flower setup
fastapi-azure-auth - Easy and secure implementation of Azure AD for your FastAPI APIs 🔒 B2C, single- and multi-tenant support.
databases - Async database support for Python. 🗄
cookiecutter-django-vue-graphql-aws - A highly opinionated Cookiecutter template that fuses together Django, Vue.js, GraphQL, and AWS into one full-stack web application.
pydantic-to-typescript - CLI Tool for converting pydantic models into typescript definitions
docker-traefik-cloudflare-companion - Automatically Create CNAME records for containers served by Traefik
openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)