this post was submitted on 13 Jun 2026
17 points (94.7% liked)
Python
8032 readers
1 users here now
Welcome to the Python community on the programming.dev Lemmy instance!
📅 Events
Past
November 2023
- PyCon Ireland 2023, 11-12th
- PyData Tel Aviv 2023 14th
October 2023
- PyConES Canarias 2023, 6-8th
- DjangoCon US 2023, 16-20th (!django 💬)
July 2023
- PyDelhi Meetup, 2nd
- PyCon Israel, 4-5th
- DFW Pythoneers, 6th
- Django Girls Abraka, 6-7th
- SciPy 2023 10-16th, Austin
- IndyPy, 11th
- Leipzig Python User Group, 11th
- Austin Python, 12th
- EuroPython 2023, 17-23rd
- Austin Python: Evening of Coding, 18th
- PyHEP.dev 2023 - "Python in HEP" Developer's Workshop, 25th
August 2023
- PyLadies Dublin, 15th
- EuroSciPy 2023, 14-18th
September 2023
- PyData Amsterdam, 14-16th
- PyCon UK, 22nd - 25th
🐍 Python project:
- Python
- Documentation
- News & Blog
- Python Planet blog aggregator
💓 Python Community:
- #python IRC for general questions
- #python-dev IRC for CPython developers
- PySlackers Slack channel
- Python Discord server
- Python Weekly newsletters
- Mailing lists
- Forum
✨ Python Ecosystem:
🌌 Fediverse
Communities
- #python on Mastodon
- c/django on programming.dev
- c/pythorhead on lemmy.dbzer0.com
Projects
- Pythörhead: a Python library for interacting with Lemmy
- Plemmy: a Python package for accessing the Lemmy API
- pylemmy pylemmy enables simple access to Lemmy's API with Python
- mastodon.py, a Python wrapper for the Mastodon API
Feeds
founded 3 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
That's the other part that's a bit problematic. There is some async support, but ORM calls, to my knowledge, are still blocking. There has been some effort put into it, but I'm not sure they'll manage to reimplement it. Other parts of the framework and third party middlewares are blocking too, which makes writing async Django a bit of a minefield.
There needs to be a non negligible amount of work to make sure a given request remains asynchronous across all layers today.
That's a pity.
One of the biggest things I miss about django is its ORM. There is simply nothing better in my opinion. It allows me to think about the application I want to write, not about all the database nonsense and how to join tables, make unions, or aggregate stuff, etc. I have to reevaluate if async is that important to me or not. Every other solution without a similar ORM feels inferior.
Possibly SQLalchemy? But yeah, it's quite good, and there are ways you can bypass the Django ORM and write your own SQL in the cases where it's suboptimal. I've only had to do that a very small number of times during the 20-plus years I've been using Django (I was an early adopter, left Zope like a .38 round leaves a gun).
It also helps that I have some decent SQL optimization skills: when I was doing consulting, I triggered the resignations of two client DBAs because they insisted that there was no way to significantly improve a query's performance, then I did it. Stupid hill to die on, all they had to have done was to have said "OK, let's prototype it and see" instead of getting all dogmatic about it. Ego's a dangerous thing in software development.
SQLalchemy is horrible, IMO. You have to read so much of its documentation to get a grip on things. And the backwards compatible changes they made while moving to (I think) SQLAlchemy2 make it terribly difficult to tell apart the API. And type hints were an abomination to deal with when they tried adding them (it's better now).
And don't get me started on migrations with alembic.
I wish the Django ORM could be extracted from Django and used in other projects, but then I also just want to go back to Django.
Reply to /u/onlinepersona SQLAlchemy crocodile tears.
Really need a layer between SQLAlchemy and FastAPI (or litestar, ...). Otherwise would be messing around with SQLAlchemy/alembic internals for years. SQLAlchemy is an incredible time sink without that additional layer.
Created just such a package just never got around to publishing it:
Issues:
Remember back in the day ... raw SQL. All the children in unison say, "Woah"!
There is no avoiding the database part: model module, alembic migrations, static type checking, UDF, UDF rtyping, string PRAGMAs/SET|SHOW. And a beautiful config file to link them all!
Database work is very time consuming.
Why would be concerning yourself about that? Should have both [a]sync support throughout. Discussing this shouldn't even be a topic it should be the norm.
While your point is valid, it's a bit much to fault Django for the deficiencies of third-party middleware.