Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запуск внешнего скрипта posgresql / 6 сообщений из 6, страница 1 из 1
17.01.2014, 15:33:52
    #38529763
papkodimka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
Добрый день!
У меня есть табличка, при добавлении записи в таблицу мне необходимо запускать внешний python-скрипт на сервере, передавая ему аттрибуты записи. Подскажите, пожалуйста, каким образом мне это реализовать, возможно есть примеры?
...
Рейтинг: 0 / 0
17.01.2014, 15:49:25
    #38529793
Dim666
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
papkodimka,

http://www.postgresql.org/docs/8.4/static/server-programming.html

Выбирайте язык, который знаете (perl, python или чистый С) и пишите функцию, которая будет делать http-запрос на ваш сервер. Можно еще конечно просто "обёртку" для system сделать (чтобы какой-нить wget дёргать), но это слегка опасно.

Потом эту функцию вызывайте внутри триггера AFTER INSERT на вашей табличке. Хотя это не кошерно (особенно когда данные у вас будут вставляться большими пачками).
...
Рейтинг: 0 / 0
17.01.2014, 15:59:14
    #38529812
papkodimka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
Если взять к примеру, PL/Python, то тогда как мне подключать стандартные модули python'a типа http.client, чтобы в функции на PL/Python отправлять http-запросы в xml-формате?
...
Рейтинг: 0 / 0
17.01.2014, 16:34:49
    #38529882
AndreiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
papkodimka,

простой пример создания таблицы t(url, param, result) при добавлении записи в которую делаетс запрос на url с параметрами param, а ответ сервера сохраняется в result:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
create table t(
  id serial primary key,
  url text not null,
  param1 text,
  param2 text,
  result text
);

CREATE OR REPLACE FUNCTION http_req()
  RETURNS trigger AS
$BODY$
import urllib

params = {
  'param1': TD['new']['param1'],
  'param2': TD['new']['param2']
}

TD['new']['result'] = urllib.urlopen(TD['new']['url'] + '?' + urllib.urlencode(params)).read()
return  'MODIFY'
$BODY$
  LANGUAGE plpythonu;


CREATE TRIGGER ins_t
  BEFORE INSERT  ON t
  FOR EACH ROW EXECUTE PROCEDURE http_req();
...
Рейтинг: 0 / 0
17.01.2014, 16:55:05
    #38529919
AndreiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
papkodimkaЕсли взять к примеру, PL/Python, то тогда как мне подключать стандартные модули python'a?все как в обычном python'е, ... хотя это и есть обычный python )
Код: python
1.
2.
3.
4.
5.
6.
#стандартные модули (из site-packages):
import sys, os, time

#модули из произвольных директорий:
sys.path.append('/opt/my_module/')
import my_module
...
Рейтинг: 0 / 0
17.01.2014, 17:47:12
    #38529975
papkodimka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск внешнего скрипта posgresql
Спасибо


AndreiSQLpapkodimkaЕсли взять к примеру, PL/Python, то тогда как мне подключать стандартные модули python'a?все как в обычном python'е, ... хотя это и есть обычный python )
Код: python
1.
2.
3.
4.
5.
6.
#стандартные модули (из site-packages):
import sys, os, time

#модули из произвольных директорий:
sys.path.append('/opt/my_module/')
import my_module
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запуск внешнего скрипта posgresql / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]