Python: работа с MySQL?

Доброго времени суток! В Python начинающий, перехожу с PHP.
Столкнулся сразу с проблемой (или не проблемой): слишком большой выбор реализации одного и того же, огромное количество библиотек и фреймворков.
PHP я использовал для написания скриптов для выборки с MySQL. Использовал PDO или MySQLi. Начал искать что есть для работы с MySQL для Python - куча всего, глаза разбегаются. Вроде хорошо, что есть выбор, но для новичка это напряжно. Вот хотел бы спросить - если не использовать ORM типа SQLAlchemy, а нужна лишь удобная стабильная библиотека, в которой будут и prepared statements, что обычно используют? Я так нашел для себя MySQLdb - вроде более менее. Но терзают сомнения, судя по документации - штука старая, может есть что лучше, развивается и популярнее. Еще нашел оригинальный драйвер для Python от MySQL, может его используют чаще?

В общем, прошу совета: что мне выбрать (и обычно выбирают python-программисты) для удобной и быстрой работы с MySQL.

P.S. такое же замешательство у меня и с остальными направлениями - слишком много всего. Например, хочу работать с SNMP - куча выбора, правда все древнее и не поймешь что лучше, так как опыта пока не много
  • Вопрос задан
  • 4405 просмотров
Решения вопроса 1
yttrium
@yttrium
Лучшей практикой является использование ORM. Такого рода абстракции приводят к единому подходу для разных СУБД, что позволяет не привязываться к конкретной СУБД. (Я, например, больше склоняюсь к PostgreSQL.) Советую использовать ORM SQLAlchemy или Django.
А конкретно для mysql тот же Django советует использовать..
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bromzh
Drugs-driven development
На самом деле, SQLAlchemy делится на 2 части: работа с БД (то, что ты хочешь) и отдельно ОРМ (который, естественно, медленнее, чем работа напрямую с БД).
Так вот, если не нужно ОРМ - не используй. Захочешь использовать модели - пожалуйста. При этом, тебе не потребуется менять библиотеки и переписывать весь код. Плюс, единообразие при работе с любыми БД.

UPD
Тут неправду пишут, что использование ОРМ всегда лучше. ОРМ всегда медленнее, нежели работа напрямую. Плюс, ты не всегда сможешь выразить на языке ОРМ то, что нужно.
На хабре часто упоминается, что для простых ненагруженных вещей люди используют JPA ORM (это для java). Когда нагрузки возрастают, переходят на "прямые" запросы. Вот только фишка в том, что эти запросы обычно описываются в неком унифицированном виде (на неком специальном варианте SQL). Таким образом, и без использования ОРМ можно не привязываться к конкретной СУБД.
Так вот алхимия как раз-таки позволяет использовать как унифицированный интерфейс для работы с БД без ОРМ (это sqlalchemy core), так и строить поверх него отображения на модели (sqlalchemy orm).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы