Here are my notes on installing cx_Oracle python
module to access Oracle Database
12c. First, you need to download these two packages from Oracle Instant
Client
site.
-
Instant Client Package - Basic
-
Instant Client Package - SDK
I’ve tried their .rpm packages and it did not work for me on Linux, so
I would suggest you use the .zip packages instead.
Once you downloaded these two, unzip them into a single directory (eg:
$HOME/apps/instantclient). You then need to follow these instructions
to install the module itself.
cd $HOME/apps/instantclient
ln -s libclntsh.so.12.1 libclntsh.so
export ORACLE_HOME=$HOME/apps/instantclient
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
pip install cx_Oracle
Here are some quick python test code to verify cx_Oracle is working.
import cx_Oracle as db
dsn='(DESCRIPTION=(ADDRESS=(HOST=myhost)(PORT=1521)(PROTOCOL=TCP))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl)))'
conn = db.connect('zemian', 'Welcome1', dsn)
cur = conn.cursor()
cur.execute('SELECT 1+1')
print(cur.fetchone()[0])
cur.close()
conn.close()
Using the dsn form above can connect directly to database without the
need to setup further entry in Oracle’s tnsnames.ora file.
Optionally installing sqlplus client
The sqlplus is a classic client you may use to connect to the Oracle
database. You may install this to perform adhoc query and verify your
data. Download the following from the same download site above.
- Instant Client Package -
SQL\*Plus
Unzip and then add the following to your PATH
export $ORACLE_HOME/bin:$PATH
sqlplus mydbuser@(DESCRIPTION=(ADDRESS=(HOST=myhost)(PORT=1521)(PROTOCOL=TCP))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl)))
For more information, see sqlplus
doc