python postgresql

Upload: dougatencio

Post on 11-Oct-2015

37 views

Category:

Documents


0 download

TRANSCRIPT

  • Hola PostgreSQL (con Python)Una de las tareas ms frecuentes cuando iniciamos con las bases de datos es cmo

    conectamos las mismas con nuestros programas. En particular conectarse con PostgreSQL es

    una tarea bastante simple con Python. Como sabr en Python buena parte de los elementos

    del lenguaje se encuentran en las PEP (Python Enhancement Proposals), y en cuanto a las

    bases de datos esto no es la excepcin y la DB API 2.0 se especifica en la PEP-249, siga el

    vnculo para conocer los detalles. Una de las consecuencias directas de esta normalizacin

    del lenguaje es que muy probablemente lo que use para PostgreSQL con este tutorial sea

    vlido para otro gestor de base de datos relacional cuyo conector implemente esta API.

    Instalando Psycopg2Si utiliza Linux prefiera instalar la versin de psycopg2 correspondiente a su distribucin, por

    ejemplo para Fedora sera:?

    $ yum install python-psycopg2y para Debian sera:

    ?

    $ aptitude install python-psycopg2Sin embargo, tambin puede hacer uso del instalador de Python llamado pip. Este instalador

    es muy potente, pero debido a que psycopg2 necesitar compilar unos fuentes durante la

    instalacin asegrese que su computador tenga instaladas las bibliotecas de desarrollo de

    PostgreSQL y obviamente un compilador. Si todo est bien y tiene los permisos adecuados,

    bastar escribir en su terminal:?

    $ pip install psycopg2Si utiliza Windows descargue la versin correspondiente para la versin de su Sistema

    Operativo, su Python y de su PostgreSQL en la pgina de win-psycopg.

    Conectando Python con PostgreSQLSi todo fue bien con la instalacin entonces ser sencillo comunicarse con PostgreSQL. Para

    probar la instalacin y la conexin con su gestor de base de datos escriba lo que sigue en su

    terminal:?

    $ pythonPython 2.7.3 (default, Jan 2 2013, 16:53:07)[GCC 4.7.2] on linux2Type "help", "copyright", "credits" or "license" for more

  • information.>>> import psycopg2>>> exit()$En caso de no haber ningun mensaje de error entonces ha instalado correctamente psycopg2.

    El siguiente paso ser conectar con su base de datos, para ello crearemos una base de datos

    para pruebas.?

    $ su - postgres$ createdb prueba$ exity luego procedemos a conectar con PostgreSQL desde Python:

    ?

    $ pythonPython 2.7.3 (default, Jan 2 2013, 16:53:07)[GCC 4.7.2] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import psycopg2>>> conexion = psycopg2.connect("dbname=prueba user=postgres")>>> conexion.close()>>> Recuerde hacer de su string de conexin (o dsn) adecuado para su configuracin: los

    parmetros de conexin aceptados son: dbname, user, password, host y port, para ms

    detalles ver: psycopg2.connect. En caso de recibir algn error, verifique con su cliente

    PostgreSQL que la configuracin que utiliz para Python est correcta.

    Conversando con PostgreSQL al estilo PythonDado por sentado que no tuvo problemas de conexin entonces retomamos la sesin

    interactiva y pasaremos a crear una tabla y llenarla con datos, de modo de mostrar cmo se

    envan instrucciones mediante la DB API 2.0 de Python al gestor de base de datos:?

    >>> conexion = psycopg2.connect("dbname=prueba user=postgres") # se crea la conexin>>> cursor = conexion.cursor() # se crea un cursor>>> query1 = """CREATE TABLE la_vinotinto (id serial primary key, goles integer, nombres varchar(100), apellidos varchar(100));""" # consulta para crear la tabla>>> cursor.execute(query1)>>> query2 = "INSERT INTO la_vinotinto(goles, nombres, apellidos) VALUES (%, %, %)">>> cursor.execute(query2, (22, "Giancarlo", "Maldonado"))>>> cursor.execute(query2, (21, "Juan", "Arango"))

  • >>> cursor.execute(query2, (14, "Ruberth", "Moran"))>>> cursor.execute(query2, (11, "Jose Manuel", "Rey"))Ahora vamos a preguntarle algunas cosas a nuestra tabla de goleadores de la vinotinto:

    ?

    >>> query3 = "SELECT * FROM la_vinotinto">>> cursor.execute(query3)>>> cursor.fetchone()(1, 22, "Giancarlo", "Maldonado")>>> query4 = "SELECT apellidos, nombre FROM la_vinotinto ORDER BY goles;">>> cursor.execute(query4)>>> resultados = cursor.fetchall()>>> for i in resultados:... print i...('Rey', 'Jose Manuel')('Moran', 'Ruberth')('Arango', 'Juan')('Maldonado', 'Giancarlo')>>>Finalmente con Python debe dejar claro a PostgreSQL que la comunicacin se ha terminado,

    por lo que es necesario cerrar le cursor y la conexin. Es importante este paso, as liberar

    recursos en su programa y permitir al gestor de bases de datos liberar la conexin dedicada

    al programa y usarla para otro usuario.?

    >>> >>> cursor.close()>>> conexion.close()Pequeo Script de Python con PostgreSQLAhora vamos a escribir un pequeo programa con lo aprendido en el dilogo anterior, copie el

    siguiente programa en un archivo llamado hola_postgres.py:?

  • 123456789

    101112131415161718

    #/usr/bin/env python# -*- coding: utf-8 -*- import psycopg2DSN = "dbname=prueba user=postgres" def leer_datos(): con = psycopg2.connect(DSN) cur = con.cursor() query = "SELECT * FROM la_vinotinto;" cur.execute(query) for jugador in cur.fetchall(): print(jugador) cur.close() con.close() if __name__== "__main__": leer_datos();

    El programa realiza en la funcin leer_datos() un despliegue de los jugadores almacenados en

    la tabla la_vinotinto, en si no reviste de mucha complejidad. Finalmente para ejecutar el

    programa escriba en su terminal:?

    $ python hola_postgres.py(1, 22, 'Maldonado', 'Giancarlo')(2, 21, 'Arango', 'Juan')(3, 14,'Moran', 'Ruberth')(4, 11'Rey', 'Jose Manuel')$Recomendado leerObviamente esto es un pequeo abreboca, para profundizar un poco ms en las posibilidades

    que ofrecen estas herramientas es necesario leer un poco ms. Sugiero como lecturas

    complementarias las siguientes pginas.

    PEP-249 (http://www.python.org/dev/peps/pep-0249/) Documentacin de Psycopg2 (http://pythonhosted.org/psycopg2/)

    Documentacin de PostgreSQL (http://www.postgresql.org/docs/)

    Documentacin de pip (http://www.pip-installer.org/)

    Hola PostgreSQL (con Python)Instalando Psycopg2Conectando Python con PostgreSQLConversando con PostgreSQL al estilo PythonPequeo Script de Python con PostgreSQLRecomendado leer