Назначение SQLAlchemy поверх MySQLdb

12

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

Теги:
sqlalchemy

3 ответа

14
Лучший ответ

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

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

  • 0
    SQLAlchemy утверждает, что состоит из ядра и ORM . Нужно ли устанавливать MySQLdb для взаимодействия Python и MySQL? Я ничего не знаю, но, насколько я понимаю, ядро SQLAlchemy может заменить MySQLdb. Это правильно? sqlalchemy.org/features.html
  • 1
    @Kit, нет SQLAlchemy Core не заменяет фактический адаптер базы данных DBAPI2, такой как MySQLdb. Ядро SQLAlchemy на самом деле не связывается с вашей базой данных. Вам необходимо установить MySQLdb (или, предпочтительно, oursql) для связи с MySQL.
9

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

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

  • 0
    Примерно такая же причина для использования Active Record в Ruby или Doctrine в PHP (или любой другой форм ...)
  • 0
    В настоящее время MySQLdb не поддерживает Unicode (он был отключен после обнаружения ошибок, связанных с Unicode). SQLAlchemy абстрагирует те вызовы кодирования / декодирования, которые вы должны выполнять вручную, не используя его.
Показать ещё 1 комментарий
3

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

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

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

  • 1
    Причина 2, часть того, что делает SA особенно приятным, заключается в том, что тривиально вставлять raw sql куда угодно: engine.execute ("MY RAW SQL STRING;")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню