Какой проект Python выбрать для приложения, насыщенного базой данных

Я планирую разработать в Python довольно тяжёлое (~100 таблиц) веб-приложение. Основное внимание уделяется обеспечению приятного и оптимизированного для задач интерфейса для людей, которые редактируют или перемещаются по данным. Другие направления:

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

Я много читал о Django, TurboGears, пирамиде, WebCore,... но мне все еще трудно понять, с чего начать.

Моя текущая оценка предполагает, что турбогенераторы - это путь. Пирамида кажется слишком многим, чтобы учиться. Джанго, кажется, слишком сосредоточен на публикации. WebCore кажется немного незрелым, чтобы основывать такой проект на нем.

Я что-то пропускаю? Существуют ли другие более подходящие платформы Python? Моя информация о некоторых из них просто неверна? Какие рамки вы бы выбрали для этого проекта и почему?

4 ответа

Решение

По моему мнению, единственной частью django, которая может быть "слишком" ориентирована на публикацию, является администратор, но я видел множество приложений django, которые делают вещи аккуратно.

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

Во-вторых, я бы просто просмотрел учебники по следующим проектам, читать о них хорошо, но маленький небольшой учебник / проект (или мини-прототип) - это единственный способ увидеть, соответствует ли проект вашему стилю программирования: пирамида, турбоагрегаты, и джанго. У них есть самые большие общины. Лучший инструмент будет тот, с которым вы чувствуете себя более комфортно. Все они имеют хорошую, отличную документацию, хорошие поддерживающие сообщества и достаточно зрелы для серьезных проектов, и для очень тонких различий вы, вероятно, можете использовать любой из них для своих нужд.

Я должен согласиться с вами: если у вас уже есть модель базы данных, Django - не лучший путь.

Что касается привязки базы данных, SQL Alchemy определенно стоит проверить независимо от того, какую среду вы выберете.

Некоторые дополнения к вашему списку:

  • Web.py - немного низкоуровневая, но приятная, зрелая среда (для использования SQLAlchemy, см. Кулинарную книгу по SQLAlchemy)
  • Tornado - Очень хорошая производительность, поддерживает веб-сокеты, которые могут быть проблемой для некоторых приложений.

Изменить: в настоящее время я бы рекомендовал Flask вместо Web.py. Торнадо очень хорошо с этим работает.

Моя интуиция говорит, что вы хотите использовать SQLAlchemy в качестве ORM. Turbogears делает это из коробки и, вероятно, является крупнейшим игроком в пространстве "не Django".

Была проделана некоторая работа по извлечению SQLAlchemy для (или в дополнение к!) ORM в Django, но я не знаю, насколько актуальна эта работа (быстрый поиск в Google нашел статьи 2008-2009 годов в числе самых популярных)

Количество таблиц не имеет отношения к скорости и т. Д. И не имеет отношения к выбору каркаса. Рекомендация: использовать SQLAlchemy в качестве ORM между базой данных и приложением. Перейти на пирамиду в качестве веб-фреймворка. Пирамида проста, хорошо документирована, тестовая и очень гибкая во всех аспектах. Формы и т. Д. Могут быть легко созданы с помощью дополнений "colander" + "deform".

Другие вопросы по тегам