Trabajar con MySQL desde Python

Para acceder a bases de datos MySQL con Python, tenemos que instalar un módulo adicional. Siempre que tengo que montar una instalación en Mac OS X se me olvida el nombre del paquete. El módulo en cuestión es: MySQLdb

Se puede instalar con easy_install, tal que así:

sudo easy_install MySQL-python

Durante la instalación, busca el programa mysql_config, esta utilidad viene con MySQL, en mi caso tengo instalado MySQL con MacPorts, así que tenemos que asegurarnos que en nuestro PATH tengamos accesible la ruta de los ejecutables de mysql.

En mi caso, modifiqué el archivo .profile añadiendo la siguiente linea:

export PATH=$PATH:/opt/local/lib/mysql5/bin:

Y listo!

error while loading shared libraries

Este error me aparecía después de compilar e instalar (correctamente) Gearman en un Ubuntu Server 9.10.

Tanto el proceso de compilación como el de instalación habían ido bien, el problema lo tenía cuando intentaba ejecutar el binario recien instalado, me aparecía el siguiente error:

gearmand: error while loading shared libraries: libgearman-server.so.0: cannot open shared object file: No such file or directory

El problema era claro, el sistema no sabía como encontrar las librerias compartidas necesarias, así que buscando por Google, encontre la solución:

sudo /sbin/ldconfig -v

Este comando actualiza la caché y las rutas donde ld busca las librerias, volví a probar y tema solucionado.

Instalar paquetes en Python

Llevo muy poco tiempo aprendiendo, y utilizando Python, hasta el momento todo son buenas vibraciones. Una de las primeras cosas con las que me tropecé fue con la necesidad de instalar paquetes o módulos, que no vienen en la instalación estándar, y que son utilizados por algunos scripts.

Un ejemplo práctico:

Quería probar un filtro para logs de Apache llamado loghetti, según explican en la página del proyecto, a partir de la información del log de Apache en formato combined, permite extraer información de una forma rápida y sencilla.
Pues bien, este script depende del módulo CommandLineApp para su funcionamiento, así que toca instalarlo.

¿Cómo lo hacemos?

Muy fácil, nos vamos al repositorio oficial de paquetes para Python, PyPI (Python Package Index), y buscamos el paquete en cuestión, en este caso CommandLineApp, tenemos suerte y nos aparece su ficha descriptiva. Nos vamos a su página de descarga y lo bajamos a nuestro Mac 😉

Por costumbre todos los paquetes los tengo recopilados en un directorio src, así que coloco el archivo CommandLineApp-3.0.5.tar.gz en mi directorio src, abro un Terminal, y realizo las siguientes acciones:

tar xzvf CommandLineApp-3.0.5.tar.gz
cd CommandLineApp-3.0.5
sudo python setup.py install

Listo!, ya puedo utilizar loghetti.

Instalar Python 2.6 en Mac OS X Leopard

En Mac OS X Leopard tenemos disponible por defecto la versión 2.5 de Python, las últimas (en el momento de escribir esto) versiones estables de Python son la 2.6.2 y la 3.1.1

En mi caso me interesaba tener instalada la versión 2.6 así que el proceso fue tan simple como ir a la web de Python y bajarme el instalador para Mac

Para instalar es tan sencillo como montar la imágen de disco y lanzar el instalador:

Captura del instalador de Python

El propio instalar modificar el PATH para que desde el Terminal utilicemos la nueva versión por defecto, así que si abrimos un terminal y lanzamos el intérprete lo que veremos se debería parecer a esto:

Intérprete Python

Recursos para aprender Python

Hace poco decidí ampliar mis conocimientos, hay que mantenerse en forma :), y ponerme a aprender un nuevo lenguaje de programación, después de un breve repaso por la web, me decidí por Python.

Otro día explicaré mis motivos, de momento, aquí dejo una lista de los recursos que encontré en la web que me están siendo de ayuda:

Cuando coja un poco de soltura con el lenguaje, me dedicaré a ver que frameworks MVC para la web tienen mejor pinta.

Buscar y borrar los archivos encontrados

Otro comando útil, aunque este el peligroso.

Para cuando queramos buscar archivos con una extensión o nombre concreto en una estructura de directorios y borrarlos:

ATENCIÓN QUE EL RM LO CARGA EL DIABLO!!

find . -name 'README.txt' | xargs rm

Este comando busca todos los archivos con el nombre README.txt y los borra.

Buscar una cadena de texto en múltiples archivos

A menudo queremos saber que archivos contienen una cadena de texto. Si queremos hacer esto desde la línea de comandos:

find . -name '*.php' | xargs grep 'cadenaabuscar' -l

Este comando busca todos los archivos con extensión ‘.php’ en el directorio actual y sus subdirectorios, pasa la salida a grep y éste nos muestra los nombres de los archivos que contienen la cadena buscada.

Esto funciona en Mac OS X y en cualquier sistema Unix.

Instalar PHP en Mac OS X Leopard

Leopard incluye PHP 5 de serie, sin embargo el servidor Apache que viene con el sistema no tiene el módulo de PHP activo.

Si no queremos complicarnos la vida y empezar ya a probar nuestros scripts en PHP, podemos habilitar el módulo de la siguiente forma.

Y para los que no se aclaren con el inglés:

  • Abrimos un terminal y ejecutamos:sudo nano /private/etc/apache2/httpd.conf (El sistema nos pedirá la contraseña del administrador)
  • Más o menos sobre la linea 114 encontraremos lo siguiente:
    # LoadModule php5_module libexec/apache2/libphp5.so

    Debemos descomentarla para habilitar el módulo, quedaría así:

    LoadModule php5_module libexec/apache2/libphp5.so

  • Guardamos el archivo y vamos al menú superior > Manzanita > Preferencias del sistema
  • Hacemos clic sobre Compartir
  • Y reiniciamos el servicio “Compartir Web” (desmarcando y marcando el checkbox)

Con esto ya tendríamos el módulo activo. Para probar que todo funciona ok, podemos ir a nuestro directorio Web, en nuestra carpeta personal, y crear un archivo test.php que contenga lo siguiente:


<?php
phpinfo();

Para probar la página, abrimos nuestro navegador favorito y vamos a la siguiente URL:
http://localhost/˜nombre_usuario/test.php

Deberíamos ver la página de información de PHP:

Captura de phpinfo()

Y con esto ya tenemos nuestro módulo activo.