Итак, начнем.
1. Для того чтобы определить, какая версия python совместима с postgres, идем по пути «C:\Program Files\PostgreSQL\13\doc».
В папке нас интересует файлик installation-notes.html
В файле указана версия python, совместимая с сервером.
2. Собственно скачиваем и устанавливаем python.
Python устанавливаем в корень диска C
3. Для подключения python к postgresql нужно в папке «C:\Python37» взять dllку «python3.dll» скопировать ее в «C:\Program Files\PostgreSQL\13\lib» и переименовать ее в python37.dll.
4. Если вы только установили PostgreSQL и pgAdmin 4 не хочет открываться, pgadmin можно установить в python.
Для того чтобы установить pgAdmin4, нужно в командной строке ввести команду «pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.30/pip/pgadmin4-4.30-py3-none-any.whl»
Сервер админа запускается командой «pgadmin4»
Если не хочется вводить пароль и логин, то в файле config.py значение SERVER_MODE устанавливаем False.
5. Включаем поддержку языка python
В pgADmin запускаем редактор SQL
Вводим CREATE LANGUAGE plpython3u. Если все красиво стало, увидите сообщение о удачно выполненном запросе. Если появились ошибки, то тогда нужно прописать переменные среды как на скрине ниже.
В переменных PYTHONHOME и PYTHONPATH указываем путь до папки с python. Перезагружаем компьютер, пробуем опять выполнить запрос CREATE LANGUAGE plpython3u.
6. Создаем хранимую процедуру.
Sys.path.append() устанавливает рабочий каталог для скриптов python.
В рабочем каталоге создаем файл testy.py с функцией tests.
В SQL редакторе выполним запрос SELECT public.test()
Если все правильно сделали, то увидите в результате выполнения строку «Внешний скрипт»
7. Настраиваем драйвер ODBC
8. Создаем внешнюю обработку с процедурой на клиенте.
Connection = Новый COMОбъект("ADODB.CONNECTION");
АДОНаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
АДОКоманда = Новый COMОбъект("ADODB.Command");
Connection.ConnectionString = "Driver={PostgreSQL Unicode};data source=PostgreSQL35W;STMT="+"utf8";
Попытка
Connection.open();
Сообщить("База PostgreSQL подключена");
АДОКоманда.ActiveConnection = Connection;
АДОКоманда.CommandText = "SELECT public.test();";
АДОНаборЗаписей = АДОКоманда.Execute();
Сообщить(АДОНаборЗаписей.Fields("test").Value);
Connection.Close();
Исключение
Сообщить("Не могу подключиться к базе PostgreSQL ");
КонецПопытки;
И если нет ошибок, получаем строку (Внешний скрипт) из скрипта на python, как показано на принтскрине выше.