Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

SQLAlchemy rocks!

Чулан
Сегодня занимался модельками своего блога и решил приделать к Entry (это запись в блоге) счётчик комментариев. Представление данных в приложении у меня реализовано с помощью SQLAlchemy, напомню, что это реализация Data Mapper, в отличие от модных сейчас (в основном благодаря Django и Rails) Active Record реализаций слоя источника данных.

Для подсчёта комментариев у меня нет никакого аккумулятора в таблице entries_table, таким образом, мне надо каждый раз считать count на комментариях. Но как это сделать правильно?

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 990
Комментарии 8

Анализ участников

Django *
Перевод
Некоторым из вас, возможно, будет интересно узнать, что более 900 уникальных участников было задествовано в разработке Django, начиная с 1 января 2007 года. Данные основаны на логах SVN.
Должен заметить, что сообщество очень сильное, особенно в сравнеии с другими, широко известными проектами:
  • Django: 906
  • Pylons: 80
  • PyPy: 240
  • Linux Kernel: 4043
  • PostgreSQL: 150
  • Apache HTTP server: 118
  • SQLAlchemy: 36
  • Python: 428

Необходимо учесть, что все анонимные и гостевые коммиты считались за одного участника, если конечно проект позволял таковые.
Всего голосов 30: ↑24 и ↓6 +18
Просмотры 680
Комментарии 8

Pylons Framework

Разработка веб-сайтов *

Расскажу я вам, дорогие мои читатели, о замечательном веб-фреймворке Pylons (язык Python). Непонятно почему он был так обделен вниманием на хабре. Постараюсь исправить такую несправедливость. Я считаю его лучшим и попытаюсь вам раскрыть многие его прелести.


Pylons создавался с оглядкой на популярные решения, так говорит нам wiki. Но по личному опыту скажу вам, что основные идеи были взяты из Ruby On Rails и улучшены!


Pylons активно использует внешние компоненты:


Читать дальше →
Всего голосов 39: ↑34 и ↓5 +29
Просмотры 3.2K
Комментарии 50

Профилирование SQL (SQLAlchemy) в Pylons с помощью Dozer

Разработка веб-сайтов *
Перевод
image
Хотите понять, почему ваше приложение, написанное с помощью фреймворка Pylons, столь медлительное? Скорей всего ему приходится быть таким из-за ваших SQL запросов, и наилучший способ способ понять, что происходит исколько времени тратится на каждый из них — установить Dozer (созданый Беном Бангертом (Ben Bangert) из команды разработчиков Pylons) и добавить в ваше приложение небольшой класс TimerProxy (написанный zzzeek'ом из команды разработчиков SQLALchemy.

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.1K
Комментарии 0

Flask-Admin

Python *Flask *
Доброе время суток.

Хочу представить проект, над которым работал в последнее время: Flask-Admin. Если в двух словах, это расширение для фреймворка Flask, которое позволяет быстро создавать административный интерфейс в стиле Django.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Просмотры 45K
Комментарии 22

Мега-Учебник Flask, Часть 4: База данных

Разработка веб-сайтов *Python *Flask *
Перевод
Tutorial
Это четвертая статья в серии, где я описываю свой опыт написания веб-приложения на Python с использованием микрофреймворка Flask.

Цель данного руководства — разработать довольно функциональное приложение-микроблог, которое я за полным отсутствием оригинальности решил назвать microblog.



Краткое повторение


В предыдущей части мы создали нашу форму входа в комплекте с представлением и валидацией.

В этой статье мы намереваемся создать нашу базу данных и поднять ее, чтобы мы могли записывать туда наших пользователей.

Чтобы следовать этой части, ваше приложение микроблога должно быть таким, каким мы оставили его в конце предыдущей. Пожалуйста, убедитесь, что прилолжение установлено и работает.
Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 127K
Комментарии 13

Вводная по сложным запросам в SQLAlchemy

Блог компании True Engineering Python *SQL *

Во время посещения PyConRu 2014 я, с удивлением, узнал, что достаточно большая аудитория python-разработчиков не использует SQLAlchemy в качестве основного инструмента для работы с базой данных. Порассуждав на данную тему после Light Talks с коллегами было принято решение — во чтобы то ни стало написать статью о том, что же можно делать со всей мощью SQLAlchemy.


Обычно в написании сайтов не требуется чего-нибудь этакого от штатного ORM. А если и требуется, то хватает замены на нештатный или прочтения основной части документации. И, как правило, голову ломать над сложными запросами не приходится. Достаточно много различных ORM предлагают классические схемы One-2-Many, One-2-One, Many-2-Many, и т.д. Для обычных запросов и связей этого вполне достаточно. К сожалению, в больших проектах не обходится без частных случаев и программисты при сложных запросах пишут либо raw sql, либо полагаются на то, что им предлагает базовый функционал ORM. Это выглядит не совсем красиво или создает достаточно большую нагрузку на базу данных.

Понятно, что в погоне за скоростью выполнения сценариев, можно пожертвовать красотой кода, но что если скоростью можно пренебречь, а вот кроссплатформенностью — нет? Да и не хочется в python коде видеть что-то кроме python кода. А что если хочется на полную катушку использовать любимый ORM (для меня SQLAlchemy) и не писать raw sql запросы?
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 65K
Комментарии 10

Flask. Наполняем «флягу» функционалом

Разработка веб-сайтов *Python *Flask *
Из песочницы

Предисловие


В прошлом году решил для себя вплотную познакомиться c Python, а в последствии перебраться на него с PHP. На данный момент моя стезя — веб-разработка, а потому осваивать новый язык я начал именно со стороны веба, в частности, с обзора доступных фреймворков и проектов на них. Познакомившись с возможностями TurboGears, web2py, Django, я всё таки поддался «тренду» и погрузился в мир Django.

На протяжении почти года я честно пытался подружиться с ним. Написал несколько простеньких проектов, но монструозность фреймворка отпугивала, обилие «батареек» путало выбор, а с некоторыми ограничениями не хотелось мириться. Душа требовала лаконичности и однозначности, что в конечном счете привело меня к знакомству с Flask. Изучив документацию по фреймворку и смежным проектам (Jinja2, Werkzeug), я проникся идеологией и стал вплотную изучать фреймворк.

Flask позиционируется как расширяемый микрофреймворк. Это означает наличие лишь необходимого минимума функционала, но в то же время возможность добавить оный посредством расширений до требуемого проекту уровня.

Сей эпос — это мой опыт под использованию Flask и расширений для него, а точнее, попытка собрать воедино и на русском то, что может пригодиться при создании проектов практически любого уровня.
Читать дальше →
Всего голосов 34: ↑29 и ↓5 +24
Просмотры 41K
Комментарии 20

Пишем свой канал-бот для Telegram как у Хабра на Python

Python *Программирование *
Из песочницы

Недавно ко мне обратился друг с просьбой написать бота, импортирующего новости из RSS-канала на сайте в Telegram-канал. Огромнейшим плюсом данного способа оповещения являются push-уведомления, которые приходят каждому подписанному пользователю на его устройство. Уже давно хотелось заняться чем-то подобным. Недолго думая, в качестве образца я выбрал канал Хабра telegram.me/habr_ru. В качестве языка программирования был выбран Python.

Читать дальше →
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 52K
Комментарии 15

Scrapy: собираем данные и сохраняем в базу данных

Python *
Из песочницы

Введение


Меня заинтересовал данный фреймворк для сбора информации с сайтов. Здесь были публикации по Scrapy, но поскольку детальной информации на русском языке мало, то я хотел бы рассказать о своем опыте.
Читать дальше →
Всего голосов 30: ↑23 и ↓7 +16
Просмотры 59K
Комментарии 14

Как я SQLAlchemy удобной сделал

Разработка веб-сайтов *Open source *Python *
Из песочницы

Не секрет, что SQLAlchemy — самая популярная ORM на Python. Она позволяет писать куда более продвинутые вещи, чем большинство Active Record собратьев. Но плата за это — более сложный код, и в простых задачах вроде CRUD это напрягает.


О том, как я сделал Алхимию удобной, воспользовавшись опытом лучших Active Record ORM, читайте под катом.


Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Просмотры 46K
Комментарии 22

Английские субтитры с Лео

Python *

Привет, Хабрахабр!
Я продолжительное время учу английский и хочется достичь идеала, но этот процесс не быстрый. На данный момент уровень моего английского позволяет мне довольно таки неплохо распознавать разговорную речь, но фильмы, пока, я смотрю всё так же с субтитрами. Даже без них, я уверен, в видео могут попадаться слова, которых я не знаю и хоть общий смысл будет понятен, мне всё равно захочется узнать, что это за слово.


Таким образом при просмотре фильма получается такой порядок действий:


  • смотрим
  • встречаем незнакомое слово
  • переключаемся на браузер, вкладку lingualeo
  • ищем слово, выбираем перевод, добавляем
  • смотрим фильм дальше

Вроде бы достаточно неплохо, но утомляет. Хочется смотреть фильм беспрерывно, а если точно знаешь, что все слова будут знакомыми — отказаться от субтитров, слушать и заодно тренировать. Как я решил эту проблему, читайте дальше.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 7.6K
Комментарии 11

Pygest #18. Релизы, статьи, интересные проекты, пакеты и библиотеки из мира Python [5 ноября 2017 — 15 ноября 2017]

Python *Учебный процесс в IT Читальный зал

image Всем привет! Это уже восемнадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

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

Итак, поехали!



Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 9.4K
Комментарии 4

Ускорение SQLAlchemy для архитектурных космонавтов

Блог компании Qrator Labs Python *Совершенный код *SQL *Проектирование и рефакторинг *

Хабр, это доклад инженера-программиста Алексея Старкова на конференции Moscow Python Conf++ 2018 в Москве. Видео в конце поста.
Всем привет! Меня зовут Алексей Старков — это я, в свои лучшие годы, работаю на заводе.
Теперь я работаю в Qrator Labs. В основном, всю свою жизнь, я занимался C и C++ — люблю Александреску, «Банду Четырех», принципы SOLID — вот это всё. Что и делает меня архитектурным космонавтом. Последние пару лет пишу на Python, потому что мне это нравится.

Собственно, кто такие «архитектурные космонавты»? Первый раз я встретил данный термин у Джоэля Спольски, вы наверное его читали. Он описывает «космонавтов», как людей, которые хотят построить идеальную архитектуру, которые навешивают абстракцию, над абстракцией, над абстракцией, которая становится все более и более общей. В конце концов, эти уровни идут так высоко, что описывают все возможные программы, но не решают никаких практических задач. В этот момент у «космонавта» (это последний раз, когда данный термин окружен кавычками) кончается воздух и он умирает.

Я тоже имею тенденции к архитектурной космонавтике, но в этом докладе я расскажу немного о том, как это меня укусило и не позволило построить систему с необходимой производительностью. Главное — как я это поборол.

Краткое содержание моего доклада: было / стало.
Всего голосов 29: ↑24 и ↓5 +19
Просмотры 7.7K
Комментарии 3

Крадущийся тигр, затаившийся SQLAlchemy. Основы

Python *PostgreSQL *SQL *


Доброго дня.


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


Данная ORM имеет порог вхождения выше среднего, поэтому я попытаюсь объяснить всё простым языком и с примерами. Статья будет полезна тем, кто уже работает с sqlalchemy и хочет прокачать свои навыки или только знакомится с этой библиотекой.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 39K
Комментарии 10

Тестирование производительности Python ORM методом, основанном на бенчмарке TPC-C

Python *SQL *

При написании приложений на Python, для работы с базами данных часто используются объектно-реляционные мапперы (ORM). Примерами ORM являются SQLALchemy, PonyORM и объектно-реляционный маппер, входящий в состав Django. При выборе ORM довольно важную роль играет её производительность.


На Хабре, да и в интернете в целом, можно найти не один тест производительности. Как пример качественного бенчмарка python ORM можно привести бенчмарк от Tortoise ORM (ссылка на репозиторий). Данный бенчмарк анализирует скорость работы шести ORM для одиннадцати различных видов SQL-запросов.


В целом бенчмарк от tortoise хорошо позволяет оценить скорость выполнения запросов при использовании разных ORM, но у такого подхода к тестированию я вижу одну проблему. ORM зачастую используют в веб приложениях, где одновременно несколько пользователей могут посылать различные запросы, но я не нашел ни одного бенчмарка, оценивающего работу ORM при таких условиях. Вследствие этого я решил написать свой бенчмарк и сравнить с помощью него PonyORM и SQLAlchemy. За основу я взял бенчмарк TPC-C.

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.4K
Комментарии 5

Практическое руководство по разработке бэкенд-сервиса на Python

Блог компании Яндекс Python *Программирование *Анализ и проектирование систем *Тестирование веб-сервисов *
Tutorial
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →
Всего голосов 70: ↑68 и ↓2 +66
Просмотры 94K
Комментарии 50

Создаем Python Flask сервис с актуальными данными по COVID-19 из Википедии

Python *Программирование *Data Mining *API *Flask *
Tutorial

image


Наша команда занимается созданием информационного сервиса по отображению глобальных данных для многих стран, городов и территорий — Routitude. К концу февраля этого года стремительное распространение коронавируса по всему миру побудило нас внедрить дополнительный функционал для мониторинга ситуации в наше приложение. Помимо визуализации данных в веб-интерфейсе, основным компонентом реализации этой задачи стал микросервис, написанный на Python с использованием популярного веб-фреймворка Flask.


Сервис регулярно обновляет данные из различных источников и по запросу отдает необходимую информацию для визуализации в веб-интерфейсе. Основным источником данных являются страницы Википедии, посвященные распространению вируса в странах и территориях. Таблицы с показателями на этих страницах оперативно обновляются и отлично подходят в качестве источника данных для сервиса по мониторингу распространения инфекции.


В статье я расскажу про основные компоненты сервиса, от получения и обновления данных до создания API для клиентских запросов. Код проекта доступен в github репозитории.

Читать дальше →
Всего голосов 17: ↑9 и ↓8 +1
Просмотры 8K
Комментарии 2

Пишем и тестируем миграции БД с Alembic. Доклад Яндекса

Блог компании Яндекс PostgreSQL *SQL *Администрирование баз данных *
Приложения на бэкенде могут работать с самыми разными базами данных: PostgreSQL, SQLite, MariaDB и другими. Перед разработчиками встает задача реализовать возможность легко и безопасно изменять состояние БД. Менять нужно как структуру базы, так и сами данные от одной версии приложения к другой.


В докладе я поделился опытом использования Alembic — хорошо себя зарекомендовавшего инструмента для управления миграциями. Почему стоит выбрать именно Alembic, как с его помощью подготовить миграции, как их запускать (автоматически или вручную), как решить проблемы необратимых изменений, зачем тестировать миграции, какие проблемы могут выявить тесты и как их реализовать — на все эти вопросы я постарался ответить. Заодно поделился несколькими лайфхаками, которые сделают работу с миграциями в Alembic легкой и приятной.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры 17K
Комментарии 11

11 друзей Sanic’а – собираем асинхронное веб-приложение на Python

Блог компании ДомКлик Python *Программирование *
Рано или поздно маленькие приложения разрастаются до нагруженных production-решений, поэтому программисту необходимо заранее продумать стек технологий. Для Python концептуальный выбор стоит между синхронными и асинхронными фреймворками. После появления библиотеки asyncio популярность асинхронных Python-фреймворков сильно выросла, потеснив таких монстров, как Django и Flask, и стало намного проще писать веб-приложения, способные пережить высокий RPS.

В нашей компании по ряду причин перешли к асинхронным решениям, и ниже я опишу пример асинхронного веб-приложения с возможностью работы с брокером очередей RabbitMQ и запуском периодичных заданий. С кодом проекта можно ознакомиться по ссылке. Это приложение можно использовать как шаблон для новых проектов, в который достаточно будет добавить свою бизнес-логику, чтобы получилось полноценное production-решение.

Статья поможет новичкам посмотреть, как можно использовать вместе различные асинхронные библиотеки. А опытные программисты могут сравнить представленное ниже решение со своими наработками и конструктивно покритиковать.
Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Просмотры 9K
Комментарии 10
1