Hey folks!
A few months ago I started a library to share some boilerplate code in our applications when it comes to SQLAlchemy.
Remember the thread about Flask and SQLAlchemy? It ended with us admitting that Flask-SQLAlchemy is pretty cool, but does not cover our non-Flask needs, can introduce issues with scripts that do multithreading manually, and ties us into Flask more than what we may feel comfortable with.
But the problem remains the same: by doing SQLAlchemy integration manually over the years, we've copied code from one project to the next, improving it when we were working on it but not backporting those improvements to older projects, and having rather sparse (I should say "distributed" ;-) ) knowledge of what the SQLAlchemy & Alembic best practices are (everybody here knows about constraint naming conventions? Foreign key enforcement on SQLite?)
In the spirit of avoiding code duplication and sharing maintenance, I've started the sqlalchemy-helpers library.
The idea is to standardize on best practices with SQLAlchemy & Alembic usage without depending on Flask, but with an optional Flask integration. The README has a list of features and usage examples, so I'll let you go over there and skim read it.
Basically what I've done is go over all our Flask apps using SQLAlchemy, look at what features they implemented, and bring them into sqlalchemy-helpers. As a result if you decide to move to it you will only gain features.
The only notable exception is the pagination system that Flask-SQLAlchemy implements and that at least one project has copied. If it proves useful, we can always bring it to sqlalchemy-helpers, but let's start small for now.
It targets SQLAlchemy 1.3+ & 2.0, Flask 2.0+ and Python 3.6+.
I've used it personally for a few months already and I'd say it works quite well. I'm very interested in feedback. My next step is to improve user documentation because right now it's only the README and the APIdocs.
I hope we can join forces and maintain this sort of boilerplate code in a central place.
Cheers!
Aurélien
_______________________________________________ infrastructure mailing list -- infrastructure@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to infrastructure-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/infrastructure@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure