Скомпилированный доступ к исполняемому файлу python заблокирован для доступа к базе данных Oracle - PullRequest
4 голосов
/ 06 марта 2019

У меня есть скрипт (my_script.py), который обращается к базе данных Oracle с помощью типичного процесса входа в систему с помощью cx_Oracle.

def make_connect(**creds):
    dsn_str = cx_Oracle.makedsn(host, port, sid)
    return cx_Oracle.connect(un, pw, dsn_str)

Нет проблем при доступе к базе данных с помощью этого метода, когда скрипт запускается из IDE, но как только я упаковываю его в исполняемый файл (с PyInstaller, хотя я не думаю, что это имеет значение), я получаю следующая ошибка:

ORA-20045: LOGON BLOCKED

Я полагаю, что это потому, что исполняемый файл, который обращается к базе данных, не python.exe, на котором выполняется код, а my_script.exe. Код работает, как и ожидалось, если я изменю my_script.exe на python.exe, то есть я считаю, что python.exe внесен в белый список базы данных для доступа.

Я недостаточно знаю, какая конкретная системная переменная или переменная окружения объявляет себя в базе данных Oracle для доступа, но я попытался изменить sys.executable на python.exe или sys.argv [0] на python.exe , но я думаю, что есть что-то более глубокое, что мне нужно изменить (если бы я мог что-то изменить, чтобы получить доступ).

Любые предложения будут более чем полезны. Exe будет в системах с доступом домена к базе данных, но, поскольку в белый список входит только python.exe, в их доступе будет отказано.

...