Первые впечатления

Недавно я столкнулся с задачей выбора ORM для нового проекта на Python, и мое внимание привлекла TortoiseORM. Скажу честно, я был удивлен тем, насколько эта ORM упрощает работу с базами данных в асинхронных приложениях.

Как разработчик, я привык к таким инструментам, как SQLAlchemy и Peewee. Однако интеграция асинхронности в этих ORM зачастую требует дополнительных настроек и может быть довольно запутанной. TortoiseORM же изначально спроектирована с учетом асинхронности, что сразу облегчает жизнь.

Знакомый синтаксис

Один из самых больших плюсов — синтаксис, напоминающий Django ORM. Если вы работали с Django, вам не составит труда начать использовать TortoiseORM. Определение моделей выглядит интуитивно понятно:

from tortoise.models import Model
from tortoise import fields

class User(Model):
    id = fields.IntField(pk=True)
    username = fields.CharField(max_length=50)
    email = fields.CharField(max_length=100)

Выполнение запросов тоже не вызывает сложностей:

user = await User.filter(username="test_user").first()

Почему TortoiseORM впечатляет

Нативная асинхронность

Поддержка async/await встроена по умолчанию. Это значит, что вы можете эффективно работать с большим количеством одновременных запросов без дополнительной настройки.

Простота и удобство

В отличие от некоторых других ORM, здесь нет необходимости погружаться в сложную документацию или изучать новые концепции. Все просто и понятно с первого взгляда.

Производительность

В моих тестах TortoiseORM показала высокую производительность при работе с большими объемами данных. Асинхронные операции выполняются быстро и без задержек, что критично для высоконагруженных приложений.

Сравнение с другими ORM

  • Peewee: Отличная ORM для синхронных приложений, но отсутствие нативной асинхронности может стать препятствием в современных проектах.

  • SQLAlchemy: Мощный инструмент с большим количеством возможностей, но сложность настройки асинхронности и громоздкий синтаксис могут отпугнуть.

  • PonyORM: Удобный декларативный синтаксис, но в некоторых случаях уступает TortoiseORM в производительности и простоте использования.

Плюсы TortoiseORM

  • Асинхронность из коробки: Нет необходимости в дополнительных библиотеках или сложных настройках.

  • Знакомый синтаксис: Быстрое освоение благодаря сходству с Django ORM.

  • Высокая производительность: Оптимизирована для работы с большим количеством одновременных запросов.

  • Широкая поддержка баз данных: Работает с PostgreSQL, MySQL, SQLite и другими.

  • Активное развитие: Сообщество активно поддерживает и развивает проект.

Заключение

Это моя первая статья, и, хотя у меня нет большого опыта в написании, мне хотелось поделиться своей находкой с другими. Открыв для себя TortoiseORM, я был приятно удивлен ее возможностями и удобством. Для разработчиков на Python, которым нужна эффективная и простая в использовании асинхронная ORM, это решение может стать настоящей находкой. Рекомендую попробовать TortoiseORM в своих проектах — возможно, она удивит вас так же, как и меня.

Комментарии (9)


  1. MrSmitix
    15.10.2024 16:24

    ChatGPT, напиши статью... А вообще можно было раскрыть больше кейсов в примерах. Раз уж решил писать. Привести бенчмарки в сравнений с остальными, как минимум. ORM хорошая и заслуживает внимания, но тема не раскрыта :(


    1. Morty00 Автор
      15.10.2024 16:24

      Это моя первая статья, и мне еще многому предстоит научиться в плане раскрытия тем и предоставления детальной информации. Я просто хотел рассказать о TortoiseORM, потому что мало людей до сих пор знают про нее.


      1. RodionGork
        15.10.2024 16:24

        Наверное легче научиться если посмотреть хорошие статьи коллег на эту тему. У вас честно говоря вышло так будто вы решили посвятить написанию статьи не больше 15 минут :) возможно сама тема выбрана не очень удачно если по ней оказалось нечего в общем-то сказать.


  1. kalbas
    15.10.2024 16:24

    С тех пор, как я слез с иглы ORM на сырые SQL-запросы, моя жизнь заиграла новыми красками. Я даже не представляю себе, как там сейчас, с этими ормами. Как вы там пишете заковыристые цте-шки? Оконные функции? Че вообще с производительностью?


    1. lsarkisyan2000
      15.10.2024 16:24

      не пишут, они пишут круды


    1. rebug
      15.10.2024 16:24

      А как у вас дела в плане инъекций? Я вот использую орм, чтобы такого не произошло. А как вы решаете данную проблему?


  1. titan_pc
    15.10.2024 16:24

    Использовал однажды этот ОРМ подрубил к СУБД и накатил 200 таблиц. Потребление приложения при запуске tortoise.init-models() 30 Гигабайт RAM. Выбросил на помойку такую "Производительность"


  1. WinLin2
    15.10.2024 16:24

    На каждый асинхронный запрос ORM создает соединение с базой? Выигрыш в совмещении работы с базой и другими вычислениями?


  1. rebug
    15.10.2024 16:24

    А где минусы работы с тортойзом? Почему в статье нет ничего даже о банальном - проблемы с аннотациями? Такое чувство, будто вы вообще не работали с ним и написали (это еще вопрос сами ли) статью