Postgres и python - программирование

Postgres и python

В postgres 9.2 я пытаюсь создать программу python, которая может быть триггером. Я хочу запустить внешнюю программу (exe на локальном диске), поэтому я использую python для ее запуска. Когда я пытаюсь создать простую программу, например:

CREATE FUNCTION one ()
RETURNS int
AS $$
# PL/Python function body
$$ LANGUAGE plpythonu;

Я получаю сообщение об ошибке:

ERROR:  language "plpythonu" does not exist
HINT:  Use CREATE LANGUAGE to load the language into the database.

Когда я запускаю:

CREATE LANGUAGE plpythonu

Я получаю сообщение об ошибке:

ERROR:  could not access file "$libdir/plpython2": No such file or directory

Я использую Windows 7 и python 2.5.

Я смотрел во многих местах, но не могу найти решение.

Любые идеи?

4b9b3361

Ответ 1

Чтобы решить эту проблему для plpython3, необходимо было:

  • Установить Python 3.2
  • Выполнить CREATE LANGUAGE plpython3u

Обновление: здесь я написал гораздо лучшее объяснение: fooobar.com/questions/375930/...

Ответ 2

Я только что решил эту проблему, буквально несколько дней назад. Решение довольно востребовано. Вот оно.

  • Установите версию python 3.2. * только в вашей системе.
  • В Postgresql используйте команду 'CREATE LANGUAGE plpython3u' для установки поддержки языка Python 3. Чаще всего это приведет к ошибке "невозможно загрузить"..... \plpython3.dll "ошибка 126. (Обратите внимание, что если она установлена ​​правильно, ошибка не будет отображаться.)

  • Если вы получили вышеуказанную ошибку, перейдите в свой каталог установки python (по умолчанию C:\python32) и найдите "python3.dll" в папке DLL. Скопируйте этот файл в папку Postgresql 'lib' в установочном каталоге Postgres (по умолчанию это c:\program files\postgres\9.x\lib\"). Переименуйте этот скопированный файл в python32.dll.

    /li >
  • Теперь запустите команду CREATE LANGUAGE plpython3u. Он должен работать на этот раз.

Чтобы проверить, просмотрите представление pg_available_extensions в системных таблицах postgresql. Строка, содержащая plpython3u, должна иметь номер версии в столбце "установленная версия".

Примечание. Это работает только для языка plpython3u. Я не знаю никакого подобного процесса для plpython2u.

Ответ 3

Postgres использует дистрибутивы ActiveState Python. Скорее всего, ваш 2.5 слишком устарел, и Postgres не может загрузить dll plpython или не установить его, потому что не было подходящего python. Я думаю, что последние postgres - buil6 против Python3, а не 2.x. Вы можете посмотреть в каталоге postgres lib для plpython3.dll, чтобы узнать, что вам нужно.

Ответ 4

Я установлен python 3.2 (x64) y postgres 9.3 (x64)

Выполните этот код CREATE EXTENSION plpython3u

Не забудьте проверить "installation-note.html" в вашей версии postgresSQL, есть определенная версия python для вашего postgresSQL