Python и Postgresql - PullRequest
       35

Python и Postgresql

4 голосов
/ 25 мая 2010

Если вы хотите манипулировать данными в таблице в базе данных postgresql, используя некоторый python (возможно, проведя небольшой анализ набора результатов, используя scipy), а затем хотите экспортировать эти данные обратно в другую таблицу в той же базе данных, как Вы бы пошли о реализации?

Это единственный / лучший способ сделать это: просто выполнить запрос, заставить python сохранить его в массиве, манипулировать массивом в python, а затем запустить другой оператор sql для вывода в базу данных?

Я просто спрашиваю, есть ли более эффективный способ работы с данными?

Спасибо, Ian

Ответы [ 7 ]

3 голосов
/ 25 мая 2010

Вы можете использовать PL / Python для написания функции PostgreSQL для манипулирования данными.

http://www.postgresql.org/docs/current/static/plpython.html

Хотя я думаю, что это большая часть по сравнению с обработкой во внешнемклиент для большинства случаев.

1 голос
/ 26 сентября 2013

pgnumpy , кажется, то, что вы ищете.

1 голос
/ 26 мая 2010

Это единственный / лучший способ сделать это просто запустите запрос, есть Python сохранить его в массиве, манипулировать массив в Python, а затем запустить другой SQL заявление для вывода на базы данных?

Не единственный способ (см. Другие ответы), но ИМХО самый лучший и, конечно, самый простой. Для этого требуется только библиотека PostgreSQL (я использую psycopg ). Стандартный интерфейс задокументирован в PEP 249 .

Пример SELECT с psycopg:

cursor.execute("SELECT * FROM students WHERE name=%(name)s;", 
               globals())

и INSERT:

cursor.execute("INSERT INTO Foobar (t, i) VALUES (%s, %s)", 
               ["I like Python", 42])
1 голос
/ 25 мая 2010

Я не уверен, что понимаю, что вы имеете в виду, но я бы сказал, что это очень похоже на

INSERT INTO anothertable SELECT stuff FROM the_table RETURNING *

и затем работайте над возвращенными строками. Это, конечно, если вы не хотите изменять данные при манипулировании ими.

0 голосов
/ 25 мая 2010

Я согласен с предложениями SQL Alchemy или с использованием ORM Джанго. Ваши потребности кажутся простыми для использования PL / Python.

0 голосов
/ 25 мая 2010

Вы можете использовать ORM, например SQLAlchemy , чтобы извлечь данные в «объект» и манипулировать этим объектом. Такая реализация, вероятно, будет более элегантной, чем просто использование массива.

0 голосов
/ 25 мая 2010

Я бы подумал об использовании http://www.sqlalchemy.org/.

SQLAlchemy - это набор инструментов Python SQL и Object Relational Mapper, который предоставляет разработчикам приложений полную мощь и гибкость SQL.

Он также поддерживает postgres - http://www.sqlalchemy.org/docs/05/reference/dialects/postgres.html

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