Conectar a Oracle desde Python (incluye compilación de cx_Oracle)

La conexion a una base de datos Oracle desde python se simplifica mucho si utilizamos un modulo como cx_Oracle. En el siguiente tutorial veremos los pasos para instalarlo y un breve ejemplo de conexión. Nota: en la pagina de cx_Oracle ya hay versiones precompiladas para Windows y Red hat, de manera que si utilizamos esas plataformas podriamos instalar el modulo directamente, de todas formas en este tutorial se comentara el caso desde 0.

INSTALACION DE CX_ORACLE

Si estamos utilizando un servidor de Oracle (como en el post anterior) no es necesario la instalación de un cliente de Oracle, pues ya va incluido, En otro caso tenemos que crearnos una cuenta en Oracle y descargarnos el cliente de Oracle.

En mi caso y en este ejemplo probe descargando la version ORACLE 11 para Linux 32. Son varios ficheros, debes descargarte aquellos ficheros que contienen en su nombre: basic, sdk y sqlplus. Los pasos ahora son simples:

- Descomprime los ficheros: basic , sdk y sqlplus

copia la carpeta que se crea a /etc/oracle/instant_client_11_2

Dentro crea las siguientes ligaduras:

# ln -s libclntsh.so.11.1 libclntsh.so
# ln -s libclntsh.so.11.1 libclntsh.dylib

si no creas estos enlaces, luego al intentar compilar cx_Oracle dara un error: /usr/bin/ld: cannot find -lclntsh

Ahora tenemos que actualizar las referencias a la libreras compartidas. Creamos el fichero /etc/ld.so.conf.d/oracle.conf con la siguiente línea:

/opt/oracle/instantclient_11_2

Y actualizamos:

ldconfig

si usas oracle server XE en cambio basta con insertar esta linea en este fichero:

root@ubuntu:~# cat /etc/ld.so.conf
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib

Y ejecutar tambien ldconfig (nota, en vez de 10.2.0 usa la version que hayas instalado).

Ahora insertamos en el profile del usuario y tambien como root (a la hora de compilar) ejecutamos:

export ORACLE_HOME="/opt/oracle/instantclient_11_2"
export DYLD_LIBRARY_PATH="$ORACLE_HOME"
export SQLPATH="$ORACLE_HOME"
export PATH="$PATH:$ORACLE_HOME"

Ya nos queda menos. antes de compilar “cx_Oracle” instalamos dependencias necesarias:

sudo apt-get install python-dev python-setuptools build-essential

Para evitarnos tambien el: libaio.so.1: cannot open shared object file: No such file or directory a la hora de ejecutar cx_Oracle

instalamos tambien la siguiente dependencia:

apt-get install libaio-dev

y ahora si, ya podemos compilarlo (para ello nos descargamos y compilamos los fuentes con pip):

apt-get install python-pip
pip install cx_Oracle

si todo es correcto podemos probar a importarlo desde python para comprobar que funciona:

$ python
$ import cx_Oracle
$ exit()

No deberia dar ningun error.

jose@ubuntu:~$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> exit()

Probando la conexion a ORACLE

Escribimos por ejemplo el siguiente codigo:

jose@ubuntu:~$ cat ORACLE.py

#!/usr/bin/python
import cx_Oracle
conn_str='HR/HR@127.0.0.1:1521/XE'
db_conn = cx_Oracle.connect(conn_str)
cursor = db_conn.cursor()
cursor.execute('SELECT * FROM countries')
registros = cursor.fetchall()
for r in registros:
  print str(r)

Que basicamente se conecta a la base de datos Oracle XE con el usuario HR, password HR que tenemos instalada en Local (si quieres conectar a otra base de datos Oracle cambia la cadena de conexion como corresponda) y ejecuta un select de la tabla Countries.
 

Consultando el API de cx_Oracle podremos obtener mas información de como ejecutar otro tipo de operaciones como insert, updates o deletes. Para ello recomiendo consultar los enlaces siguientes:

Enlaces sobre cx_ORACLE

- Conexion a Oracle desde Python
Documentación de cx_Oracle
Instalar cx_Oracle en Ubuntu y dos
Como conectarse a Oracle desde Python

Relacionado:

- Instalar Oracle XE en Ubuntu

1 Response to “Conectar a Oracle desde Python (incluye compilación de cx_Oracle)”


  1. 1 Daniel abril 22, 2013 en 5:28 pm

    Gracias por tu post me sirvió para mi primer paso en este tema


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s





The next version of Ubuntu is coming soon


¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
octubre 2011
L M X J V S D
« sep   nov »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Blog Stats

  • 26,848,952 hits

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.045 seguidores

A %d blogueros les gusta esto: