Как получить доступ к Oracle db без установки клиента Oracle и cx_Oracle?

У меня есть два сервера RHEL, которые работают с Python 2.4 и 2.6 отдельно. На другом сервере, который мне нужен, есть база данных Oracle.

Я пытался установить cx_oracle на моем сервере RHEL, но обнаружил, что клиент Oracle должен быть установлен первым.

Проблема заключается в том, что у меня нет разрешения на установку клиента Oracle на обоих серверах RHEL. На тех же серверах программа Perl может подключаться к Oracle db, используя:

DBI->connect("dbi:Oracle:host=myhost.prod.com;sid=prddb",'username','password')

Может ли Python сделать то же самое без установки cx_oracle и клиента Oracle? Или есть какие-либо предложения о том, как написать модуль самостоятельно, чтобы сделать то же самое?

Спасибо заранее!

Ответ 1

Обычно вам нужны библиотеки, которые не обязательно требуют прав sudo. Извлеките их в место, где программное обеспечение сможет читать и устанавливать следующие переменные среды:

ORACLE_HOME=path/to/where/you/extracted/libs
TNS_ADMIN=path/to/tnsnames.ora

Мне повезло пропустить tnsnames и просто указать хост, порт и т.д. в связи, но вполне возможно, что вам понадобится это для cx_oracle... Я не помню, когда я использовал его много лет назад.

Ответ 2

Выдержка из https://forum.omz-software.com/topic/184/oracle-database:

Там нет чистого Python-клиента для Oracle и, вероятно, никогда не будет. Даже замечательные сторонние наборы инструментов, такие как SQLalchemy, все еще полагаются на cx_Oracle, чтобы обеспечить фактическую связь с серверами баз данных Oracle.

Кроме того, по решению Google ответ будет отрицательным: на сегодняшний день не существует ни одного чистого клиента Python Oracle.

Ответ 3

Если вы не хотите использовать cx_Oracle, вы должны использовать скрипты ожиданий. (для python pexpect). Но вы должны быть осторожны, чтобы справиться со всеми ожиданиями.