PostgreSQL, функция plpython3u. os.getenv не находит переменную envinronment - PullRequest
0 голосов
/ 28 февраля 2020

Я получаю следующую ситуацию с функцией PostgreSQL plpython3u.

Недавно я добавил переменную envinronment в мой файл запуска оболочки. Команда env | grep MY_VAR возвращает MY_VAR=/path/. Но когда я запускаю запрос select * from my_func(); из командной строки psql, функция сообщает, что переменная envinronment имеет значение None.

create or replace function my_func()
returns int as
$$
import os
 for k, v in os.environ.items():
  plpy.info(k + ':' + v)
MY_VAR = os.getenv('MY_VAR')
if MY_VAR is None:
 plpy.info('was not found')
 return -1
plpy.info('MY_VAR:' + MY_VAR)
return 0
$$ language 'plpython3u';
returns int AS

. for k, v in os.environ.items(): ... печатает все переменные, кроме той, которую я ищу за. MY_VAR как-то не хватает.

Пожалуйста, совет. Почему функция не может найти MY_VAR?

Обновление

Команда \! env в командной строке psql также содержит список MY_VAR

1 Ответ

0 голосов
/ 28 февраля 2020

Как выяснилось, сервер PostgreSQL считывает переменные envinronment только один раз при запуске процесса основного сервера. Мне пришлось перезапустить сервер, чтобы получить доступ к полному списку переменных envinronment.

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