jueves, septiembre 29, 2011

Jugando con Python y Oracle Express 10 en Ubuntu / Debian


Machete útil para el curso de Python que voy a dar en Belatrix

Instalando Oracle Express 10 en Ubuntu / Debian
  • Agregar en /etc/apt/sources.list

deb http://oss.oracle.com/debian unstable main non-free
  • Importar las llaves

wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
  • Actualizar repos

sudo apt-get update
  • Instalar

sudo aptitude install oracle-xe-client oracle-xe-universal 
  • Configurar

sudo /etc/init.d/oracle-xe configure
  • Setear algunos paths al fnal de los archivos ~/.bash y en ~/.profile tanto del usuario con poder de sudo que realizó la instalación, como del usuario oracle (sudo su - oracle), como del root (necesario para compilar algunas cosas). Recordar que luego de cambiar estos archivos, se debe loguear nuevamente, e incluso reiniciar las X, para que las variables de entorno queden correctamente seteadas. Si no sabe de lo que estoy hablando, reincie la compu.
Entonces, al final de ~/.profile



if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Al final del ~/.bashrc

ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

  • Reinicie X, sesiones, o la maquina. 
  • Pruebe que se puede loguear como sysdba
sudo su - oracle
sqplus / as sysdba

  • Acceda a la interface web entrando a http://127.0.0.1:8080/apex como sys (o sysdba) + el password escrito durante el sudo /etc/init.d/oracle-xe configure
  • Entre a Administration > Manage Database Users > Users
  • En Account Status cambie el status de HR a unlocked y cambie la contraseña. Esto, porque la contraseña podría estar outdated. Enseguida vamos a necesitar esa contraseña. En mi caso, le he puesto "hr".
  • Nuevamente dentro del sqlplus lance algunos comandos, solo para conocer el nivel de acceso.
alter session set current_schema=HR
select * from all_users ;
select * from all_tables where owner = 'HR';


Para jugar con python, y corrigiendo apenas lo que encontré en http://agiletesting.blogspot.com/2005/05/installing-and-using-cxoracle-on-unix.html
  • Baje la ultima versión de cx_Oracle-x.x.tar.gz desde aqui.
  • Copie en /root los .bashrc y .profile anteriores, para que root tenga acceso a varias variables de entorno y rutas necesarias para compilar
  • Instale el paquete gcc
  • Conviértase en root sin olvidar el - mediante:
sudo su - root
  • Descomprima cx_Oracle-X.x.tar.gz y ejecute denro de la subcarpeta 
python setup.py install
  • Aqui va un ejemplo de conexión, con la contraseña "hr" del usuario HR. Idealmente, no copie el código desde aquí. Este lenguaje es muy sensible a los espacios, en su lugar hágalo desde aquí: http://pastebin.com/GqZBS38C

import cx_Oracle                                  
from pprint import pprint

connection = cx_Oracle.Connection("HR", "hr")
cursor = cx_Oracle.Cursor(connection)

#Ejemplo trayendo desde una tabla de sistema
sql = "SELECT TABLE_NAME FROM ALL_TABLES"
cursor.execute(sql)
data = cursor.fetchall()
print "TABLE_NAME"
pprint(cursor.description)
pprint(data)
cursor.close()
connection.close()


No hay comentarios.: