How do I access an Oracle db without installing Oracle's client and cx_Oracle?

别等时光非礼了梦想. 提交于 2019-12-05 12:38:22

问题


I have two RHEL servers running Python 2.4 and 2.6 separately. There is an Oracle database on the other server I need to access.

I was trying to install cx_oracle on my RHEL server but found out that the Oracle client must be installed first.

The problem is, I don’t have permission to install Oracle's client on both RHEL servers. On the same servers, a Perl program can connect to the Oracle db using:

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

Can Python do the same without installing cx_oracle and the Oracle client? Or are there any suggestions about how to write a module myself to do the same thing?

Thanks in advance!


回答1:


Usually, all you need are the libraries, which don't necessarily require sudo rights. Extract them to a place the software will be able to read from and set the following environment variables accordingly:

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

I have had best luck skipping tnsnames, and just specifying the host, port, etc in the connection, but it's quite possible you'll need it for cx_oracle...I don't remember from when I used it ages ago.




回答2:


An excerpt from https://forum.omz-software.com/topic/184/oracle-database:

There's no pure python client for Oracle and likely never will be. Even wonderful third-party toolsets like SQLalchemy still rely on cx_Oracle underneath to do the actual communication to the Oracle database servers.

—also, deciding by Google, the answer is no: there do not seem to be any pure Python Oracle clients in existence as of today.




回答3:


if you don't want use cx_Oracle you should use expect scripting. ( for python pexpect). But you need to be carefully for handle all expectations.



来源:https://stackoverflow.com/questions/19142677/how-do-i-access-an-oracle-db-without-installing-oracles-client-and-cx-oracle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!