home.social

#sqlalchemy — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #sqlalchemy, aggregated by home.social.

  1. "Wait… SQLAlchemy Core Support?", I hear you ask. Yes, #DBXS supports #SQLAlchemy Core, and has done so for quite some time. This was previously undocumented so I can certainly forgive you for not knowing.

    So the *real* story of this release is not so much any big code changes, but rather updated dependency testing as well as *comprehensive documentation* for the SQLAlchemy feature. This may teach you a few things you didn't know about #Python database support. dbxs.readthedocs.io/en/latest/

  2. "Wait… SQLAlchemy Core Support?", I hear you ask. Yes, #DBXS supports #SQLAlchemy Core, and has done so for quite some time. This was previously undocumented so I can certainly forgive you for not knowing.

    So the *real* story of this release is not so much any big code changes, but rather updated dependency testing as well as *comprehensive documentation* for the SQLAlchemy feature. This may teach you a few things you didn't know about #Python database support. dbxs.readthedocs.io/en/latest/

  3. "Wait… SQLAlchemy Core Support?", I hear you ask. Yes, #DBXS supports #SQLAlchemy Core, and has done so for quite some time. This was previously undocumented so I can certainly forgive you for not knowing.

    So the *real* story of this release is not so much any big code changes, but rather updated dependency testing as well as *comprehensive documentation* for the SQLAlchemy feature. This may teach you a few things you didn't know about #Python database support. dbxs.readthedocs.io/en/latest/

  4. "Wait… SQLAlchemy Core Support?", I hear you ask. Yes, #DBXS supports #SQLAlchemy Core, and has done so for quite some time. This was previously undocumented so I can certainly forgive you for not knowing.

    So the *real* story of this release is not so much any big code changes, but rather updated dependency testing as well as *comprehensive documentation* for the SQLAlchemy feature. This may teach you a few things you didn't know about #Python database support. dbxs.readthedocs.io/en/latest/

  5. "Wait… SQLAlchemy Core Support?", I hear you ask. Yes, #DBXS supports #SQLAlchemy Core, and has done so for quite some time. This was previously undocumented so I can certainly forgive you for not knowing.

    So the *real* story of this release is not so much any big code changes, but rather updated dependency testing as well as *comprehensive documentation* for the SQLAlchemy feature. This may teach you a few things you didn't know about #Python database support. dbxs.readthedocs.io/en/latest/

  6. Три архитектурных решения для multi-tenant B2B SaaS, о которых я пожалел, что не узнал раньше

    Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку: TENANT_ID = “tenant-1” в config.py . Полтора дня поиска бага показали, почему multi-tenant архитектуру нужно закладывать с первого коммита. Разбор трёх архитектурных решений для multi-tenant SaaS в регулируемой отрасли — tenant_id helper, PostgreSQL EXCLUDE USING gist против double-booking, 152-ФЗ как код на FastAPI и SQLAlchemy.

    habr.com/ru/articles/1033488/

    #multitenant #fastapi #postgresql #sqlalchemy #exclude_using_gist #argon2id #pbkdf2 #152фз #audit_log #b2b_saas

  7. Три архитектурных решения для multi-tenant B2B SaaS, о которых я пожалел, что не узнал раньше

    Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку: TENANT_ID = “tenant-1” в config.py . Полтора дня поиска бага показали, почему multi-tenant архитектуру нужно закладывать с первого коммита. Разбор трёх архитектурных решений для multi-tenant SaaS в регулируемой отрасли — tenant_id helper, PostgreSQL EXCLUDE USING gist против double-booking, 152-ФЗ как код на FastAPI и SQLAlchemy.

    habr.com/ru/articles/1033488/

    #multitenant #fastapi #postgresql #sqlalchemy #exclude_using_gist #argon2id #pbkdf2 #152фз #audit_log #b2b_saas

  8. Три архитектурных решения для multi-tenant B2B SaaS, о которых я пожалел, что не узнал раньше

    Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку: TENANT_ID = “tenant-1” в config.py . Полтора дня поиска бага показали, почему multi-tenant архитектуру нужно закладывать с первого коммита. Разбор трёх архитектурных решений для multi-tenant SaaS в регулируемой отрасли — tenant_id helper, PostgreSQL EXCLUDE USING gist против double-booking, 152-ФЗ как код на FastAPI и SQLAlchemy.

    habr.com/ru/articles/1033488/

    #multitenant #fastapi #postgresql #sqlalchemy #exclude_using_gist #argon2id #pbkdf2 #152фз #audit_log #b2b_saas

  9. Три архитектурных решения для multi-tenant B2B SaaS, о которых я пожалел, что не узнал раньше

    Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку Самая дорогая ошибка моего B2B SaaS имела ровно одну строчку: TENANT_ID = “tenant-1” в config.py . Полтора дня поиска бага показали, почему multi-tenant архитектуру нужно закладывать с первого коммита. Разбор трёх архитектурных решений для multi-tenant SaaS в регулируемой отрасли — tenant_id helper, PostgreSQL EXCLUDE USING gist против double-booking, 152-ФЗ как код на FastAPI и SQLAlchemy.

    habr.com/ru/articles/1033488/

    #multitenant #fastapi #postgresql #sqlalchemy #exclude_using_gist #argon2id #pbkdf2 #152фз #audit_log #b2b_saas

  10. novo artigo: sua aplicação pode estar travando sob carga mesmo com queries rápidas e banco saudável.

    o culpado quase sempre é o pool de conexões que ninguém configurou.

    cobre pool_size, max_overflow, pool_recycle, pool_pre_ping, NullPool e PgBouncer — com critérios claros para cada escolha.

    riverfount.dev.br/posts/connec

    #python #sqlalchemy #performance #produção

  11. novo artigo: sua aplicação pode estar travando sob carga mesmo com queries rápidas e banco saudável.

    o culpado quase sempre é o pool de conexões que ninguém configurou.

    cobre pool_size, max_overflow, pool_recycle, pool_pre_ping, NullPool e PgBouncer — com critérios claros para cada escolha.

    riverfount.dev.br/posts/connec

    #python #sqlalchemy #performance #produção

  12. novo artigo: sua aplicação pode estar travando sob carga mesmo com queries rápidas e banco saudável.

    o culpado quase sempre é o pool de conexões que ninguém configurou.

    cobre pool_size, max_overflow, pool_recycle, pool_pre_ping, NullPool e PgBouncer — com critérios claros para cada escolha.

    riverfount.dev.br/posts/connec

    #python #sqlalchemy #performance #produção

  13. novo artigo: sua aplicação pode estar travando sob carga mesmo com queries rápidas e banco saudável.

    o culpado quase sempre é o pool de conexões que ninguém configurou.

    cobre pool_size, max_overflow, pool_recycle, pool_pre_ping, NullPool e PgBouncer — com critérios claros para cada escolha.

    riverfount.dev.br/posts/connec

    #python #sqlalchemy #performance #produção

  14. novo artigo: sua aplicação pode estar travando sob carga mesmo com queries rápidas e banco saudável.

    o culpado quase sempre é o pool de conexões que ninguém configurou.

    cobre pool_size, max_overflow, pool_recycle, pool_pre_ping, NullPool e PgBouncer — com critérios claros para cada escolha.

    riverfount.dev.br/posts/connec

    #python #sqlalchemy #performance #produção

  15. I'm sure I'm doing something stupid, but I'm seeing SQLAlchemy+sqlite return a row that doesn't match the select condition. It is likely that SQLAlchemy is caching something, even though the session is fresh,

    But the query is:
    stmt = select(orm.Files).where(orm.Files.user == user and orm.Files.ontape == False).limit(1)

    and it's returning:
    Files(user='someuser', uuid='1b9f0805-6587-46ba-a44d-df0e2a1654bb', name='filename', size=3181952, ontape=True)

    NEVER EVER should database software cache data at the start of a session. That's just wrong.

    #Python #SQLAlchemy

  16. I'm sure I'm doing something stupid, but I'm seeing SQLAlchemy+sqlite return a row that doesn't match the select condition. It is likely that SQLAlchemy is caching something, even though the session is fresh,

    But the query is:
    stmt = select(orm.Files).where(orm.Files.user == user and orm.Files.ontape == False).limit(1)

    and it's returning:
    Files(user='someuser', uuid='1b9f0805-6587-46ba-a44d-df0e2a1654bb', name='filename', size=3181952, ontape=True)

    NEVER EVER should database software cache data at the start of a session. That's just wrong.

    #Python #SQLAlchemy

  17. I'm sure I'm doing something stupid, but I'm seeing SQLAlchemy+sqlite return a row that doesn't match the select condition. It is likely that SQLAlchemy is caching something, even though the session is fresh,

    But the query is:
    stmt = select(orm.Files).where(orm.Files.user == user and orm.Files.ontape == False).limit(1)

    and it's returning:
    Files(user='someuser', uuid='1b9f0805-6587-46ba-a44d-df0e2a1654bb', name='filename', size=3181952, ontape=True)

    NEVER EVER should database software cache data at the start of a session. That's just wrong.

    #Python #SQLAlchemy

  18. I'm sure I'm doing something stupid, but I'm seeing SQLAlchemy+sqlite return a row that doesn't match the select condition. It is likely that SQLAlchemy is caching something, even though the session is fresh,

    But the query is:
    stmt = select(orm.Files).where(orm.Files.user == user and orm.Files.ontape == False).limit(1)

    and it's returning:
    Files(user='someuser', uuid='1b9f0805-6587-46ba-a44d-df0e2a1654bb', name='filename', size=3181952, ontape=True)

    NEVER EVER should database software cache data at the start of a session. That's just wrong.

    #Python #SQLAlchemy

  19. I'm sure I'm doing something stupid, but I'm seeing SQLAlchemy+sqlite return a row that doesn't match the select condition. It is likely that SQLAlchemy is caching something, even though the session is fresh,

    But the query is:
    stmt = select(orm.Files).where(orm.Files.user == user and orm.Files.ontape == False).limit(1)

    and it's returning:
    Files(user='someuser', uuid='1b9f0805-6587-46ba-a44d-df0e2a1654bb', name='filename', size=3181952, ontape=True)

    NEVER EVER should database software cache data at the start of a session. That's just wrong.

    #Python #SQLAlchemy

  20. Ich versacke im #python Universum. Nachdem ich einen Griff an #fastapi @FastAPI bekommen und @pydantic ein wenig verstanden habe, habe ich mir #sqlalchemy angesehen und mir ist am Donnerstag #typer über den Weg gelaufen. Auth kommt dann auch noch.
    Mit einem eigenen Skill führt mich @claudeai Stück für Stück zu einer umfangreichen Anwendung

  21. Ich versacke im #python Universum. Nachdem ich einen Griff an #fastapi @FastAPI bekommen und @pydantic ein wenig verstanden habe, habe ich mir #sqlalchemy angesehen und mir ist am Donnerstag #typer über den Weg gelaufen. Auth kommt dann auch noch.
    Mit einem eigenen Skill führt mich @claudeai Stück für Stück zu einer umfangreichen Anwendung

  22. Developing a Robust CRUD Application with FastAPI and SQLAlchemy: A Comprehensive Tutorial

    In 2026, the demand for high-performance, asynchronous web services continues to grow, making FastAPI the industry standard for Python-based backend development. This guide walks you through the essen...

    📺 Watch here: youtube.com/watch?v=uGf2YTieHNw

    ##FastAPI ##SQLAlchemy ##Python ##WebDevelopment

  23. Как я за выходные собрала сервис озвучки книг на FastAPI + Edge TTS + Telegram Mini App

    Привет, Хабр! Я люблю слушать книги, но не все есть на Литрес и Storytel. Особенно это касается профессиональной литературы, фанфиков, статей и документов — всего того, что вряд ли когда-нибудь озвучат профессиональные дикторы. Я поняла, что нейросетевые голоса уже достаточно хороши для комфортного прослушивания. И подумала: а что если сделать Telegram-бота, которому можно просто скинуть файл — а через пару минут слушать аудиокнигу в удобном плеере прямо в Telegram? Так родился VoiceBooks — open-source сервис для озвучки книг, который работает полностью бесплатно. В этой статье я разберу архитектуру open-source проекта: как организован парсинг 6 форматов в единый пайплайн, как работает фоновая генерация аудио без Celery и RabbitMQ, и как элегантно обойти лимиты Telegram Bot API на загрузку файлов. Стек: Python 3.12, FastAPI, aiogram 3, Edge TTS, SQLAlchemy 2.0 + PostgreSQL. Деплой — Railway. Читать разбор архитектуры

    habr.com/ru/articles/1010306/

    #python #fastapi #telegram_bot #aiogram #edge_tts #sqlalchemy #postgresql #архитектура #petпроект #аудиокниги

  24. Как я за выходные собрала сервис озвучки книг на FastAPI + Edge TTS + Telegram Mini App

    Привет, Хабр! Я люблю слушать книги, но не все есть на Литрес и Storytel. Особенно это касается профессиональной литературы, фанфиков, статей и документов — всего того, что вряд ли когда-нибудь озвучат профессиональные дикторы. Я поняла, что нейросетевые голоса уже достаточно хороши для комфортного прослушивания. И подумала: а что если сделать Telegram-бота, которому можно просто скинуть файл — а через пару минут слушать аудиокнигу в удобном плеере прямо в Telegram? Так родился VoiceBooks — open-source сервис для озвучки книг, который работает полностью бесплатно. В этой статье я разберу архитектуру open-source проекта: как организован парсинг 6 форматов в единый пайплайн, как работает фоновая генерация аудио без Celery и RabbitMQ, и как элегантно обойти лимиты Telegram Bot API на загрузку файлов. Стек: Python 3.12, FastAPI, aiogram 3, Edge TTS, SQLAlchemy 2.0 + PostgreSQL. Деплой — Railway. Читать разбор архитектуры

    habr.com/ru/articles/1010306/

    #python #fastapi #telegram_bot #aiogram #edge_tts #sqlalchemy #postgresql #архитектура #petпроект #аудиокниги

  25. Как я за выходные собрала сервис озвучки книг на FastAPI + Edge TTS + Telegram Mini App

    Привет, Хабр! Я люблю слушать книги, но не все есть на Литрес и Storytel. Особенно это касается профессиональной литературы, фанфиков, статей и документов — всего того, что вряд ли когда-нибудь озвучат профессиональные дикторы. Я поняла, что нейросетевые голоса уже достаточно хороши для комфортного прослушивания. И подумала: а что если сделать Telegram-бота, которому можно просто скинуть файл — а через пару минут слушать аудиокнигу в удобном плеере прямо в Telegram? Так родился VoiceBooks — open-source сервис для озвучки книг, который работает полностью бесплатно. В этой статье я разберу архитектуру open-source проекта: как организован парсинг 6 форматов в единый пайплайн, как работает фоновая генерация аудио без Celery и RabbitMQ, и как элегантно обойти лимиты Telegram Bot API на загрузку файлов. Стек: Python 3.12, FastAPI, aiogram 3, Edge TTS, SQLAlchemy 2.0 + PostgreSQL. Деплой — Railway. Читать разбор архитектуры

    habr.com/ru/articles/1010306/

    #python #fastapi #telegram_bot #aiogram #edge_tts #sqlalchemy #postgresql #архитектура #petпроект #аудиокниги

  26. Как я за выходные собрала сервис озвучки книг на FastAPI + Edge TTS + Telegram Mini App

    Привет, Хабр! Я люблю слушать книги, но не все есть на Литрес и Storytel. Особенно это касается профессиональной литературы, фанфиков, статей и документов — всего того, что вряд ли когда-нибудь озвучат профессиональные дикторы. Я поняла, что нейросетевые голоса уже достаточно хороши для комфортного прослушивания. И подумала: а что если сделать Telegram-бота, которому можно просто скинуть файл — а через пару минут слушать аудиокнигу в удобном плеере прямо в Telegram? Так родился VoiceBooks — open-source сервис для озвучки книг, который работает полностью бесплатно. В этой статье я разберу архитектуру open-source проекта: как организован парсинг 6 форматов в единый пайплайн, как работает фоновая генерация аудио без Celery и RabbitMQ, и как элегантно обойти лимиты Telegram Bot API на загрузку файлов. Стек: Python 3.12, FastAPI, aiogram 3, Edge TTS, SQLAlchemy 2.0 + PostgreSQL. Деплой — Railway. Читать разбор архитектуры

    habr.com/ru/articles/1010306/

    #python #fastapi #telegram_bot #aiogram #edge_tts #sqlalchemy #postgresql #архитектура #petпроект #аудиокниги

  27. Векторный поиск в PostgreSQL: PGVector, SQLAlchemy и FastAPI

    Реализуем сервис семантического поиска на базе PostgreSQL с расширением PGVector. В статье: настройка БД через Docker, миграции Alembic, асинхронный слой на SQLAlchemy и API на FastAPI. Иллюстрация на обложке - нейрослоп для привлечения внимания

    habr.com/ru/articles/1006364/

    #PGVector #SQLAlchemy #FastAPI

  28. Векторный поиск в PostgreSQL: PGVector, SQLAlchemy и FastAPI

    Реализуем сервис семантического поиска на базе PostgreSQL с расширением PGVector. В статье: настройка БД через Docker, миграции Alembic, асинхронный слой на SQLAlchemy и API на FastAPI. Иллюстрация на обложке - нейрослоп для привлечения внимания

    habr.com/ru/articles/1006364/

    #PGVector #SQLAlchemy #FastAPI

  29. Векторный поиск в PostgreSQL: PGVector, SQLAlchemy и FastAPI

    Реализуем сервис семантического поиска на базе PostgreSQL с расширением PGVector. В статье: настройка БД через Docker, миграции Alembic, асинхронный слой на SQLAlchemy и API на FastAPI. Иллюстрация на обложке - нейрослоп для привлечения внимания

    habr.com/ru/articles/1006364/

    #PGVector #SQLAlchemy #FastAPI

  30. Векторный поиск в PostgreSQL: PGVector, SQLAlchemy и FastAPI

    Реализуем сервис семантического поиска на базе PostgreSQL с расширением PGVector. В статье: настройка БД через Docker, миграции Alembic, асинхронный слой на SQLAlchemy и API на FastAPI. Иллюстрация на обложке - нейрослоп для привлечения внимания

    habr.com/ru/articles/1006364/

    #PGVector #SQLAlchemy #FastAPI

  31. I tweaked a little bit SQLAlchemy documentation CSS to be more readable (close to python documentation):
    userstyles.world/style/26409/r
    #python #sqlalchemy

  32. I tweaked a little bit SQLAlchemy documentation CSS to be more readable (close to python documentation):
    userstyles.world/style/26409/r
    #python #sqlalchemy

  33. I tweaked a little bit SQLAlchemy documentation CSS to be more readable (close to python documentation):
    userstyles.world/style/26409/r
    #python #sqlalchemy

  34. I tweaked a little bit SQLAlchemy documentation CSS to be more readable (close to python documentation):
    userstyles.world/style/26409/r
    #python #sqlalchemy

  35. I tweaked a little bit SQLAlchemy documentation CSS to be more readable (close to python documentation):
    userstyles.world/style/26409/r
    #python #sqlalchemy

  36. #GutenMorgen #GoodMorning aus dem regnerischen #Naxos. Der (diesen Winter etwas regelmässigere) Regen tut der Insel gut, die ganze #Insel ist grün -- ganz anders als es unsere Sommerbesucher kennen. Unsere Wasserspeicher sind allerdings noch bei weitem nicht voll.

    Ich werde ein paar Stunden investieren, um die #SQLAlchemy -Dokumentation zu lesen, wenigstens kann ich dabei zwischendurch durchs Fenster auf die grün-graue Landschaft schauen. Nachmittags will ich dann wieder etwas zeichnen.

  37. New blog post is up! How I added search functionality to Rack Root, a FastAPI app.

    I cover just about all the Python code I wish I had examples for when I was figuring this out. I go over the database class design, indexes/vectors a little bit, and the API design I ended up implementing.

    #blogging #writing #development #search #rackroot #python #backend #fastapi #homelab #learning #databases #sqlalchemy

    medium.com/@a.j.longchamps/how

  38. New blog post is up! How I added search functionality to Rack Root, a FastAPI app.

    I cover just about all the Python code I wish I had examples for when I was figuring this out. I go over the database class design, indexes/vectors a little bit, and the API design I ended up implementing.

    #blogging #writing #development #search #rackroot #python #backend #fastapi #homelab #learning #databases #sqlalchemy

    medium.com/@a.j.longchamps/how

  39. New blog post is up! How I added search functionality to Rack Root, a FastAPI app.

    I cover just about all the Python code I wish I had examples for when I was figuring this out. I go over the database class design, indexes/vectors a little bit, and the API design I ended up implementing.

    #blogging #writing #development #search #rackroot #python #backend #fastapi #homelab #learning #databases #sqlalchemy

    medium.com/@a.j.longchamps/how

  40. New blog post is up! How I added search functionality to Rack Root, a FastAPI app.

    I cover just about all the Python code I wish I had examples for when I was figuring this out. I go over the database class design, indexes/vectors a little bit, and the API design I ended up implementing.

    #blogging #writing #development #search #rackroot #python #backend #fastapi #homelab #learning #databases #sqlalchemy

    medium.com/@a.j.longchamps/how

  41. New blog post is up! How I added search functionality to Rack Root, a FastAPI app.

    I cover just about all the Python code I wish I had examples for when I was figuring this out. I go over the database class design, indexes/vectors a little bit, and the API design I ended up implementing.

    #blogging #writing #development #search #rackroot #python #backend #fastapi #homelab #learning #databases #sqlalchemy

    medium.com/@a.j.longchamps/how

  42. Cложные запросы через паттерн Repository. Large Repository

    После негодования по поводу реализации паттерна Repository в обучающих материалах, а именно скудность функционала, я решил, что нужно расширяться и это привело к тому, что появился ORM Query Builder, о котором подробно расскажет вам эта статья.

    habr.com/ru/articles/991494/

    #sqlalchemy #repository #patterns #python #api

  43. Cложные запросы через паттерн Repository. Large Repository

    После негодования по поводу реализации паттерна Repository в обучающих материалах, а именно скудность функционала, я решил, что нужно расширяться и это привело к тому, что появился ORM Query Builder, о котором подробно расскажет вам эта статья.

    habr.com/ru/articles/991494/

    #sqlalchemy #repository #patterns #python #api

  44. Cложные запросы через паттерн Repository. Large Repository

    После негодования по поводу реализации паттерна Repository в обучающих материалах, а именно скудность функционала, я решил, что нужно расширяться и это привело к тому, что появился ORM Query Builder, о котором подробно расскажет вам эта статья.

    habr.com/ru/articles/991494/

    #sqlalchemy #repository #patterns #python #api

  45. Cложные запросы через паттерн Repository. Large Repository

    После негодования по поводу реализации паттерна Repository в обучающих материалах, а именно скудность функционала, я решил, что нужно расширяться и это привело к тому, что появился ORM Query Builder, о котором подробно расскажет вам эта статья.

    habr.com/ru/articles/991494/

    #sqlalchemy #repository #patterns #python #api

  46. Компромиссы

    До того как я начал кодить, я думал, что у разработчиков на любую задачу есть какое-то одно решение — бест-практика. Достаточно почитать SO или, вот теперь, пообщаться с нейронкой и — вуаля — задача сделана. Но, начав погружаться в литературу по дизайну систем, я стал чаще встречать тему про компромиссы. У задач нет единственных способов решения. Сейчас я рад, что на практике стали попадаться ситуации, где нет одного решения, но есть цели и ограничения.

    habr.com/ru/articles/988846/

    #sql #sqlalchemy #проектирование #компромисс

  47. Компромиссы

    До того как я начал кодить, я думал, что у разработчиков на любую задачу есть какое-то одно решение — бест-практика. Достаточно почитать SO или, вот теперь, пообщаться с нейронкой и — вуаля — задача сделана. Но, начав погружаться в литературу по дизайну систем, я стал чаще встречать тему про компромиссы. У задач нет единственных способов решения. Сейчас я рад, что на практике стали попадаться ситуации, где нет одного решения, но есть цели и ограничения.

    habr.com/ru/articles/988846/

    #sql #sqlalchemy #проектирование #компромисс

  48. Компромиссы

    До того как я начал кодить, я думал, что у разработчиков на любую задачу есть какое-то одно решение — бест-практика. Достаточно почитать SO или, вот теперь, пообщаться с нейронкой и — вуаля — задача сделана. Но, начав погружаться в литературу по дизайну систем, я стал чаще встречать тему про компромиссы. У задач нет единственных способов решения. Сейчас я рад, что на практике стали попадаться ситуации, где нет одного решения, но есть цели и ограничения.

    habr.com/ru/articles/988846/

    #sql #sqlalchemy #проектирование #компромисс