SQLAlchemy или psycopg2? - PullRequest
       15

SQLAlchemy или psycopg2?

24 голосов
/ 21 декабря 2011

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

Сценарий - это прагматичное, тактическое решение существующей проблемы. однако, я предполагаю, что сценарий со временем превратится в более «усовершенствованную» систему. Учитывая тот факт, что в настоящее время он собирается очень быстро (т. Е. У меня нет времени поливать огромные стопки документации), я испытываю желание пойти быстрым и грязным путем, используя psycopg.

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

  1. написано на C, так быстрее, чем sqlAlchemy (написано на Python)?
  2. Нет уровня абстракции над DBAPI, так как работает только с одним дБ и одним дб (импликация -> быстро)
  3. (На данный момент) мне не нужен ORM, поэтому я могу напрямую выполнять свои операторы SQL без необходимости изучать новый синтаксис ORM (т. Е. Легкий)

Недостатки:

  1. Я ЗНАЮ, что хочу, чтобы ОРМ был дальше по линии
  2. psycopg2 («датирован»?) - не знаю, как долго он будет оставаться вокруг

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

  1. выполнять операторы SQL напрямую, без необходимости возиться со слоем ORM и т. Д.

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

Ответы [ 2 ]

49 голосов
/ 21 декабря 2011

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

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

4 голосов
/ 21 декабря 2011

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

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

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

...