pysql , el sustituto perfecto de sqlplus

Posted on Sat 02 April 2011 in misc • 2 min read

Todo el que haya trabajado con oracle sabrá que el cliente de consola, sqlplus, es una aplicación poco amigable para trabajos repetitivos y tienes que estar continuamente modificando el formato de salida porque si no lo que sale por pantalla no se entiende. Eso no quiere quitarle méritos a sqlplus, una herramienta muy potente para la generación de informes, que es para lo que fue diseñado.

Hace ya un par de años, mirando en los repositorios de sourceforge, encontré un proyecto llamado pysql http://pysql.sourceforge.net aunque ahora tienen los repositorios en github https://github.com/digitalfox/pysql

Pysql es un sustituto para sqlplus, para gente como yo, que le guste usar la consola de forma intensa, pero sin renunciar a una aplicación potente.

Las caracteristicas que mas me gustan son:

  • soporte para readline: podemos hacer edición de la linea de comandos, historial de comandos, control-R para completar
  • informes AWR
  • explain plan directo y con syntax-color
  • ddl de objectos en un solo comando
  • librerias: ponemos guardar una query con el comando lib para reutilizarlo mas tarde. Muy potente, ya que con el tabulador nos muestra todas las disponibles, por si te olvidas del nombre
  • sqltune: podemos pedirle a oracle que analize una query y nos haga recomendaciones para mejorar el rendimiento

Para poder usar pysql, necesitamos hacer la instalación de varios componente imprescindibles

  • Cliente oracle 10g o 11g
  • Python
  • cx_oracle modulo python de acceso a oracle

No voy a explicar como se instala el cliente oracle, eso necesitaría otro post, asi que si teneis problemas en esta parte, mirar la documentación de oracle. Se necesita el cliente completo, ya que para compilar cx_oracle, necesitamos los headers y tener configuradas correctamente las variables de entorno.

vmalaga@lnxport:~$ vi .bashrc

ORACLE_HOME=/home/vmalaga/oracleclient_1 PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib export ORACLE_HOME PATH LD_LIBRARY_PATH CLASSPATH

Ahora nos descargamos el modulo cx_oracle y lo instalamos:

wget "http://downloads.sourceforge.net/project/cx-oracle/5.1/cx_Oracle-5.1.tar.gz" vmalaga@lnxport:~$ tar xvfz cx_Oracle-5.1.tar.gz vmalaga@lnxport:~$ cd cx_Oracle-5.1/ vmalaga@lnxport:~/cx_Oracle-5.1$ python setup.py build vmalaga@lnxport:~/cx_Oracle-5.1$ sudo python setup.py install

Si todo a ido bien ya tenemos instalado el modulo, ahora instalamos pysql

vmalaga@lnxport:~$ wget "http://downloads.sourceforge.net/project/pysql/pysql/0.15/pysql-0.15.tar.gz" vmalaga@lnxport:~$ tar xvfz pysql-0.15.tar.gz vmalaga@lnxport:~/pysql-0.15$ cd pysql-0.15/ vmalaga@lnxport:~/pysql-0.15$ python setup.py build vmalaga@lnxport:~/pysql-0.15$ sudo python setup.py install

Ya tenemos instalado pysql, ahora solo nos queda arrancarlo:

vmalaga@lnxport:~$ pysql

Welcome to pysql shellType "help" for some help.Use Tab for completion (not connected) conn sys/pass@sid as sysdba user@sid user@sid help

Con el comando help nos muestra los comandos disponibles, que son muchos y los explicare en la próxima entrega.