LINUX.ORG.RU

Посоветуйте модули/технологии python для реализации простой ИС.

 ,


0

1

Добрый день! Необходимо создать простую информационную систему для работы внутри сети, а именно — БД, часть, которая работает с БД и клиентская часть на основе web-технологий.

Т.е., сама система и БД будет находится отдельно на сервере, а на клиентских компьютерах — web-интерфейс. Язык программирования - Python.

Интересуют следующие вопросы:

1) Каким образом можно реализовать web-интерфейс, какие модули питона для этого лучше использовать?

2) БД, думаю, выбрать MySQL либо PostgreSQL. Что посоветуете?

3) Есть ли примеры/open source проекты подобного рода?

4) Возможно, есть еще какие-либо нюансы... ?

UPD.: Хотелось бы как можно проще. Без всяких фреймворков типа Django и т.д...



Последнее исправление: arssenia (всего исправлений: 2)

Ответ на: комментарий от Wizard_

Есть проект, держащий более 70к в сутки. Правда, он сильно переписан, но в основе его LS.

на старой работе был проект на pyramid, который держал несколько млн пользователей в сутки. Ничего переписывать не нужно было.

xpahos ★★★★★
()
Ответ на: комментарий от Wizard_

Это проблемы MySQL, нет?

это проблема LS, т.к. запросы далеки даже от нормальных. Раньше можно было открыть код и просто плакать. Просто жмешь pg down и видишь SQL Injection через каждые 3 пролистывания. Заходишь посмотреть почему страница белая - а там в коде XSS. Я не программист, но так писать просто нельзя.

xpahos ★★★★★
()
Ответ на: комментарий от zz

Как же тебя на баше-то заклинило.

Менеджмент ассетов

что это?

Какой-нибудь велосипед для версионирования/миграции базы

в джанго уже есть миграция? раньше south использовали.

Авторизация через фейсбуки

это есть только в джанго, да? Кстати, что-то в доках про это не слова: https://docs.djangoproject.com/en/1.4/ . Наверно нужны костыли.

Отправка емейлов

исключительно джанго-фича, да. Даже и не предствляю как у меня письма-то шлются... Хинт: в питоне есть целый smtp клиент/сервер в стандартной либе и весьма неплохой парсер и генератор писем.

аплоад в S3

там какой-то особенный аплоад? У джанги какая-то особая поддержка зондов появилась? Впрочем s3 не нужен. Опять-таки, в гугле сходу нашёл кучу снипетов и они никак на джангу не завязаны. Например: http://blog.odonnell.nu/posts/streaming-uploads-s3-python-and-poster/ . Код тривиален.

которые умеют из той же алхимии генерироваться

джанга-формы умеют с алхимией работать?

Итого я релижу прототип за два дня, а ты еще не закончил велосипедить часть батреек которые тебе будут нужны.

да что-то по твоему посту не похоже :)

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

что это?

Скомпилировал coffeescript/less/sass, склеил, пожал, залил в цдн.

джанга-формы умеют с алхимией работать?

Они умеют работать.

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

zz ★★★★
()
Ответ на: комментарий от zz

Скомпилировал coffeescript/less/sass, склеил, пожал, залил в цдн.

Можно ссылочку на доку? Вот отсюда: https://docs.djangoproject.com/en/1.4/ . Хочу посмотреть что там джанга в плане деплоимента придумала. А то раньше там такого не было.

Хотя, подозреваю, и тут какой-нить fabric будет не плох.

Они умеют работать.

ну отлично. запишем первый плюсик джанге: там есть формы. Мне, правда, толку от них и алхимии ноль, у меня nosql, ну может кому нужно.

По поводу всего остального ... с тем же фласком у тебя имплементация этого будет больше его кодобазы.

С чем остальным-то? Ты опять про отсылку писем? :)

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

С чем остальным-то? Ты опять про отсылку писем? :)

Да.

ну отлично. запишем первый плюсик джанге: там есть формы. Мне, правда, толку от них и алхимии ноль, у меня nosql, ну может кому нужно.

Ну так наверное следовало начать с того что у тебя ридонли фронтенд к базе.

zz ★★★★
()
Ответ на: комментарий от zz

Ты опять про отсылку писем? :)

Да.

Ужас, 2012 год, а у людей всё проблемы с формами и отправкой почты :) Покажи мне чего такого крутого умеет джанга с отсылкой писем чего в пару (десятков) строк не смогу сделать я. Вот тут есть пример как это делается: http://docs.python.org/library/email-examples.html

у тебя ридонли фронтенд к базе.

??? У меня, например, redis.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Покажи мне чего такого крутого умеет джанга с отсылкой писем чего в пару (десятков) строк не смогу сделать я.

Я нигде не утверждал что велосипеды будут большие, просто 90% кода будет велосипедами.

??? У меня, например, redis.

Ну если у тебя нет нужды в формах, ты явно ничего не спрашиваешь у пользователей :)

zz ★★★★
()
Ответ на: комментарий от zz

просто 90% кода будет велосипедами.

велосипеды лучше костылей :P Тем более что алхимия явно не выглядит родным приложением для джанги.

Хотя я не считаю родной орм убогим. Орм у джанги такой же как и вся джанга - решает «средние по интернету» задачи сайтостроения + набор костылей (типа raw sql) на случай если чего-то не хватит. Беда в том что не все сайты средние.

нет нужды в формах, ты явно ничего не спрашиваешь у пользователей :)

я рассуждаю так: сайт это не только и не столько формы. Сколько кода в среднем занимает обработка форм? Неужели там такой сложный код чтобы сильно над этим заморачиваться? Впрочем, я воркфлоу понимаю: сделали модельку, по ней и формы сгенерили и валидатор сам создался, красота. Я и не говорю что это плохо. Я просто для себя решил что этого не достаточно чтобы тянуть монстра в виде джанги.

А, админка! Ну, действительно полезная фича (хотя она простая, а расширение админки требует, имхо, нетривиальных навыков знания внутренностей джанги). Однако я, например, хотел чтобы она вела логи действий, могла показывать diff между версиями и хранила n-предыдущих версий для сайта. Увы, не срослось. (да, я извращенец, я знаю).

Зато меня интересуют (интересовали) другие вещи которые в большинстве своём находил скорее на djangosnippets.org чем в доках. Это ли не велосипедизм-костылизм в чистом виде?

Всё, выдыхаю :). Теперь можешь разносить меня в пух и прах :)

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

велосипеды лучше костылей :P Тем более что алхимия явно не выглядит родным приложением для джанги.

Я алхимию упомянул просто как очевидный выбор для РСУБД, если твой фреймворк не джанга.

Орм у джанги такой же как и вся джанга - решает «средние по интернету» задачи сайтостроения + набор костылей (типа raw sql) на случай если чего-то не хватит.

Да.

Беда в том что не все сайты средние.

На джанге очень просто собрать первую версию и потом навелосипедить поверх нее все что хочется, см. disq.us. Хотя конечно наверняка есть ситуации когда явно видно что даже прототип на джанге собирать нет смысла.

Зато меня интересуют (интересовали) другие вещи которые в большинстве своём находил скорее на djangosnippets.org чем в доках.

Надо было начинать с djangopackages.com :)

Я просто не понимаю людей которые советуют в ситуациях из ОП поста flask который потребует реализовывать не знакомому с веб разработкой человеку кучу машинерии и имеет 8 страничек а4 документации.

zz ★★★★
()
Ответ на: комментарий от zz

советуют в ситуациях из ОП поста flask который потребует реализовывать не знакомому с веб разработкой человеку

оо, чтобы с нуля въехать в джангу нужно очень много времени. Чтобы въехать в какой-нить фласк времени особо не нужно, тут и так всё понятно:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Сравни это с settings, urls.py итп в django. Это помимо того что джанга (по крайней мере раньше) чуть что сразу выплёвывала космических размеров бэктрейс из которого понять что нет в коде нереально. Джанго это сложно, джанго это много док которые надо прочитать прежде чем браться за код.

Кроме того ему не нужна админка, orm подойдёт любой (а то вообще два запроса на sql написать).

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Джанго это сложно, джанго это много док которые надо прочитать прежде чем браться за код.

Там туториал после которого зная питон можно сделать 99% крудов, размером с фласк доки посмотрел на свежий фласк - лол, там доков с джанго бук и функционала 1/10(?) джанги. Возвращаясь к вопросу ТС из твоего шаблона не ясно как ему сходить в Postgres и из туториала на сайте тоже.

zz ★★★★
()
Ответ на: комментарий от zz

посмотрел на свежий фласк - лол, там доков с джанго бук и функционала 1/10(?)

Это микро фреймворк.

Возвращаясь к вопросу ТС из твоего шаблона не ясно как ему сходить в Postgres и из туториала на сайте тоже.

Заюзать отдельный orm? Соответственно и документация по нему, находится на другом сайте.

SAA ★★★
()
Ответ на: комментарий от zz

Я просто не понимаю людей которые советуют в ситуациях из ОП поста flask который потребует реализовывать не знакомому с веб разработкой человеку кучу машинерии и имеет 8 страничек а4 документации.

Я начинал с flask, не имея представления о веб разработке, но я и не занимаюсь этим постоянно.

SAA ★★★
()
Ответ на: комментарий от zz

Там туториал после которого зная питон можно сделать 99% крудов

я читал туториал, он очень длинный. Нельзя вот просто сесть и писать на джанге. А на фласк можно.

Имхо, проблема джанги в том что слишком много магии.

true_admin ★★★★★
()
Ответ на: комментарий от zz

из твоего шаблона не ясно как ему сходить в Postgres и из туториала на сайте тоже.

Значит придётся вбить в гугл «python postgres how-to» :).

Ответ зависит от того чем и как он базу набивать будет. Я вот не уверен что понадобится ORM (модели так нафиг не нужны). Правда, orm добавляет секурности, так что может и стоит воткнуть...

Кстати, на джанге тоже можно писать говнокод, у меня получалось.

true_admin ★★★★★
()
Ответ на: комментарий от SAA

Заюзать отдельный orm? Соответственно и документация по нему, находится на другом сайте.

Откуда мне знать что есть орм, что они мне нужны, и как грамотно к ним подключаться из фласка? Ну да ладно, допустим мы осилили например алхимию у которой доки в два раза больше чем у джанги. И тут мне понадобилась авторизация - снова в гугл?

ЗЫ: Я начинаю понимать откуда появляются сайты с нехешированными/не солеными паролями.

zz ★★★★
()
Ответ на: комментарий от zz

ЗЫ: Я начинаю понимать откуда появляются сайты с нехешированными/не солеными паролями.

Да, используя джангу, программист сразу делает все как надо, вы правы, а те кто используют flask/bottle.py/web.py/.. быдлокодеры,как мы могли с вами спорить.

SAA ★★★
()
Ответ на: комментарий от SAA

Не владея предметной областью лепить круды на джанге проще. Помоему это очевидно. Или вы таки предлагаете ТС еще и читать про то как велосипедить авторизацию в вебе и хранить пароли? Сбрасивать пароли? Подтверждать емейлы?

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

zz ★★★★
()
Ответ на: комментарий от SAA

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

zz ★★★★
()
Ответ на: комментарий от zz

Да, меня немного занесло, но когда я начинал, я не осилил django, она мне изначально показалось слишком большой, поэтому я и говорю, что можно начинать не только с django.

SAA ★★★
()
Ответ на: комментарий от zz

P.S. занесло в том плане, что я немного утрирую, в данном споре.

SAA ★★★
()
Ответ на: комментарий от SAA

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

yanka ★★
()
Ответ на: комментарий от yanka

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

Я думаю, это как раз плюс, если реализовать какие-то вещи самому. Заодно можно научиться работать с библиотеками/микрофреймворками... Я остановил свой выбор на flask.

arssenia
() автор топика

UPD.: Хотелось бы как можно проще. Без всяких фреймворков типа Django и т.д...

Эта простота обманчива.

PolarFox ★★★★★
()
Ответ на: комментарий от yanka

а почему не werkzeug ? )))

Насколько я понял, werkzeug - это веб-сервер, который лежит в основе flask. Почему не werkzeug? Потому что только начал разбираться с flask и веб-разработкой и еще особо не смотрел в сторону werkzeug.

А можно еще ниже спуститься к стандартной библиотеке python ))) Такой опыт приобретешь...

Можно (-:

arssenia
() автор топика
Ответ на: комментарий от PolarFox

UPD.: Хотелось бы как можно проще. Без всяких фреймворков типа Django и т.д...

Эта простота обманчива.

Под простотой я понимаю внутреннюю организацию библиотеки/фреймворка: лаконичность, минимализм и т.д...

arssenia
() автор топика
Ответ на: комментарий от arssenia

werkzeug это не сервер, это wsgi библиотека для парсинга request запросов и генерации корректного response(ответа), так же там есть утилиты для работы с куками и сессиями , а так же полноценный роутинг. По сути можно писать и на основе werkzeug , просто там больше писать приходится ручками нежели во flask , но зато гибче Да в основе flask лежит werzeug - это по сути ядро flask. Я бы рекомендовала , вот что, брать flask или werkzeug, для темплейтов jinja2, для валидации форм wtforms, если нужен orm , то peewee - простенький но шустрый джанго подобный орм

yanka ★★
()
Ответ на: комментарий от yanka

werkzeug это не сервер, это wsgi библиотека для парсинга request запросов и генерации корректного response(ответа), так же там есть утилиты для работы с куками и сессиями , а так же полноценный роутинг. По сути можно писать и на основе werkzeug , просто там больше писать приходится ручками нежели во flask , но зато гибче Да в основе flask лежит werzeug - это по сути ядро flask. Я бы рекомендовала , вот что, брать flask или werkzeug, для темплейтов jinja2, для валидации форм wtforms, если нужен orm , то peewee - простенький но шустрый джанго подобный орм

Спасибо, попробую.
А что скажите по поводу SQLAlchemy? Какие плюсы/минусы по сравнению с peewee?

arssenia
() автор топика
Ответ на: комментарий от arssenia

SQLAlchemy мощный ORM практически заменяет нативные SQL запросы даже в самых сложных случаях , но его дольше осваивать нежели peewee и последний шустрее.

Начни с peewee потом попробуешь алхимию. Я вообще люблю писать нативные запросы без орм, просто пишу небольшую обвязку над psycopg2. Но еще повторюсь peewee самое то особенно для новичка

yanka ★★
()
Ответ на: комментарий от xpahos

Раньше можно было открыть код и просто плакать.

Да, запросы там не столь хороши. Но в последних версиях активно правят, вроде.

и видишь SQL Injection через каждые 3 пролистывания

А вот это вряд ли, там все параметры через DmSimple проходили с самого начала, инъекции не так просто там сделать. Может, ты просто не читал документацию к DbSimple?

Wizard_ ★★★★★
()
Ответ на: комментарий от Wizard_

А вот это вряд ли, там все параметры через DmSimple проходили с самого начала, инъекции не так просто там сделать. Может, ты просто не читал документацию к DbSimple?

мне нужно было читать документацию по DbSimple чтобы потом вставить в браузер код и проверить работает ли SQL Injection? Все отлично работало. Можно было и таблицы дропать.

xpahos ★★★★★
()
Ответ на: комментарий от Wizard_

Это на какой версии было? Я с 0.2 её щупать начал.

прошлый год. Не знаю какая там версия была.

xpahos ★★★★★
()
Ответ на: комментарий от zz

В любом случае

1) туториал джанги это даже близко не учебник по сайтостроению

2) хоть с джангой, хоть без джанги уйдёт куча времени на гугление. В этом нет ничего плохого.

Ну и, повторюсь, в джанге очень легко вызвать эпический эксепшн и как дурак смотреть на код не понимая почему оно не работает. Это побочных результат «магии» в их коде типа всяких декораторов, метаклассов итп.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Думаю для многих проектов оптимальный вариант между слишком простыми framework'ами типа flask и монструозными типа Django явл. Pyramid.

tyler19
()
Ответ на: комментарий от tyler19

Думаю для многих проектов оптимальный вариант между слишком простыми framework'ами типа flask и монструозными типа Django явл. Pyramid.

Пирамида не менее монструозна , тянет слишком много зависимостей, это такой конструктор лего. А по большому счету, что использовать и что удобно для конкретного разработчика это вопрос вкуса. Для тех кто мигрирует на python с php и у кого нет опыта работы с php фреймворками, я бы советовала брать bottle , flask и библиотеки типа webob или werkzeug. А вот для мигрантов с опытом работы с фреймворками , я бы советовала django , тогда они увидят всю мерзость пэхэпэшных фреймворков. А с опытом они могут перейти на Pyramid

yanka ★★
()
Ответ на: комментарий от yanka

я бы советовала django , тогда они увидят всю мерзость пэхэпэшных фреймворков. А с опытом они могут перейти на Pyramid

можешь обосновать чем джанга проще пирамида?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

можешь обосновать чем джанга проще пирамида?

Видимо тем что автор высказывания лучше с ним знаком.

tyler19
()
Ответ на: комментарий от yanka

Пирамида не менее монструозна , тянет слишком много зависимостей,

user@user-desktop:~$ cat workspace/ptahvenv/lib/python2.7/site-packages/pyramid-1.3-py2.7.egg-info/requires.txt

setuptools
Chameleon >= 1.2.3
Mako >= 0.3.6
WebOb >= 1.2dev
repoze.lru >= 0.4
zope.interface >= 3.8.0
zope.deprecation >= 3.5.0
venusian >= 1.0a3
translationstring >= 0.4
PasteDeploy >= 1.5.0

[testing]
WebTest >= 1.3.1
virtualenv
Sphinx
docutils
repoze.sphinx.autointerface
zope.component>=3.11.0
nose

не надо плодить мифы, по сравнению с django тут много чего нет, с django можно сравнивать надстройку над pyramid под названием ptah

bismi
()
Ответ на: комментарий от true_admin

Тут уж я думаю спорить особо не очем, так как дело вкуса. А вкус это важно. Мне опыт подсказывает, что разработчик с правильным вкусом должен воротить нос от всяких джанг. Когда я работал в хх.ру там даже школу программирования открыли, что бы воспитывать людей с правильным мышлением. Потому как люди попадая во всякие шараги, калечат свое мышление, и их в крутые конторы уже не берут.

dizza ★★★★★
()
Ответ на: комментарий от true_admin

Нельзя вот просто сесть и писать на джанге.

Можно. Проблемы легко гуглятся, логи вводят в ступор только первые пять секунд. На шестой, особо понимания не приходит, но место, где ошибка, определяется.

Reaper ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.