Подтвердить что ты не робот

SQLAlchemy или psycopg2?

Я пишу быстрый и грязный script, который требует взаимодействия с базой данных (PG).

script является прагматичным, тактическим решением существующей проблемы. однако я предполагаю, что script со временем будет развиваться в более "утонченную" систему. Учитывая тот факт, что в настоящее время он собирается очень быстро (т.е. У меня нет времени налить огромные пакеты документации), у меня возникает соблазн пойти быстро и грязно, используя psycopg.

Преимущества psycopg2 (как я понимаю сейчас):

  • написанный на C, так быстрее, чем sqlAlchemy (написанный на Python)?
  • Нет слоя абстракции над DBAPI, поскольку работает только с одним db и одним db (implication → fast)
  • (На данный момент) мне не нужен ORM, поэтому я могу напрямую выполнять свои SQL-инструкции без необходимости изучения нового синтаксиса ORM (то есть легкого)

Недостатки:

  • Я ЗНАЮ, что я захочу ORM дальше по линии
  • psycopg2 ( "датировано"?) - не знаю, как долго он останется вокруг для

Я считаю, что мои восприятия SqlAlchemy (медленная/интерпретированная, раздутая, крутая кривая обучения) истинны - я все равно могу использовать sqlAlchemy в "грубом и готовом" способе, которым я хочу использовать psycopg, а именно:

  • выполнять SQL-запросы напрямую, не связываться с уровнем ORM и т.д.

Есть ли какие-нибудь примеры этого?

4b9b3361

Ответ 1

SQLAlchemy - это ORM, psycopg2 - это драйвер базы данных. Это совершенно разные вещи: SQLAlchemy генерирует операторы SQL, а psycopg2 отправляет SQL-запросы в базу данных. SQLAlchemy зависит от psycopg2 или других драйверов базы данных для связи с базой данных!

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

Ответ 2

Чтобы поговорить с базой данных, для этого нужен драйвер. Если вы используете такой клиент, как SQL Plus для oracle, MysqlCLI для Mysql, тогда он будет запускать запрос, а этот клиент - с пакетом DBServer.

Для связи извне с любым языком, как java, c, python, С#... Нам нужен драйвер для этой базы данных. psycopg2 - это драйвер для запуска запроса для PostgreSQL из python.

SQLAlchemy - это ORM, который не такой, как драйвер базы данных. Это даст вам гибкость, чтобы вы могли писать свой код без какого-либо стандартного базиса. ORM обеспечивает независимость базы данных для программиста. Если вы пишете object.save в ORM, тогда он будет проверять, какая база данных связана с этим объектом, и будет генерировать запрос вставки в соответствии с базой данных.