Назначение SQLAlchemy поверх MySQLdb - PullRequest
14 голосов
/ 31 марта 2010

Почему люди используют SQLAlchemy вместо MySQLdb? Какие преимущества он предлагает?

Ответы [ 3 ]

19 голосов
/ 31 марта 2010

Вы не используете SQLAlchemy вместо MySQLdb - вы используете SQLAlchemy для доступа к чему-то вроде MySQLdb, oursql (другой драйвер MySQL, который, как я слышал, лучше и имеет лучшую производительность), модуль sqlite3, psycopg2 или любой другой драйвер базы данных, который вы используете Используем.

ORM (например, SQLAlchemy) помогает абстрагироваться от деталей используемой вами базы данных. Это позволяет вам избежать мельчайших подробностей используемой вами системы базы данных, исключая возможность ошибок в некоторых случаях (и представляя возможность других) и делая портирование тривиальным (по крайней мере, в теории).

11 голосов
/ 31 марта 2010

Упрощенная переносимость между различными механизмами БД (скажем, завтра вы решите перейти на sqlite, или PostgreSQL, или ...) и более высокий уровень абстракции (и, следовательно, потенциально более высокую производительность).

Вот некоторые из хороших причин. Есть также некоторые плохие причины для использования ORM, например, нежелание изучать SQL, но я подозреваю, что SQLAlchemy, в частности, не особо одобряется людьми из-за таких плохих причин, почему нужно ORM, а не чистый SQL;

3 голосов
/ 31 марта 2010

В дополнение к тому, что сказал Алекс ...

  1. «нежелание изучать SQL», вероятно, является плохой вещью, однако, если вы хотите привлечь больше нетехнических людей к участию в процессе разработки, ORM справятся с этим довольно хорошо, потому что это подтолкнуть этот уровень сложности вниз на уровень. Одним из элементов, который сделал Django успешным, является его способность позволить «газетным журналистам» поддерживать веб-сайт, а не программистам.

  2. одно из ограничений ORM заключается в том, что они не так масштабируемы, как при использовании необработанного SQL. на предыдущей работе мы хотели избавиться от большого количества ручного генерирования SQL и переключились на ORM для простоты использования (SQLAlchemy, Elixir и т. д.), но спустя месяцы мне снова пришлось писать сырой SQL чтобы обойти неэффективные запросы или запросы с высокой задержкой, которые были сгенерированы системой ORM.

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