I've waisted many days trying to connect to oracle database on our company network in python via cx_Oracle. I've read through many stack-exchange posts, looked at blog questions here etc.
I'll put all the details below, but before looking at that my fundamental question is why would Oracle not provide a simple standalone python driver package to connect to Oracle DBs that DOES NOT REQUIRE installing ALL OF THIS: Oracle Instant Client or Oracle database, and then having to tweak environment variables?
The motivation here is that data science very hot now and data science work uses Python as the preferred language; so why would you force everyone who wants to connect to Oracle in Python have to jump through all these gigantic ridiculous hoops just to connect to the DB?
I had to abandon connecting in Python and use Java instead for which there IS a simple standalone JDBC driver.
Here are the details of my environment:
Mac Mojave desktop computer.
Python 3.7
Oracle on network is version 11.2
I've tried following this installation: https://oracle.github.io/odpi/doc/installation.html#macos
I've tried and retried all the steps described there many times and end up with below exception at the python line: conn = cx_Oracle.connect(connection_string)
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 2060, in <module>
main()
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 2054, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1405, in run
return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1412, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/me/projdir/pymain.py", line 44, in <module>
conn = cx_Oracle.connect(connection_string)
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): no suitable image found. Did find:
/Users/llnesbitt/lib/libclntsh.dylib: stat() failed with errno=20". See https://oracle.github.io/odpi/doc/installation.html#macos for help