SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Programando con Pl/Python




                                                 Ernesto Quiñones Azcárate
                                                        ernesto@eqsoft.net


EQ Soft Consultoría y Soporte E.I.R.L.                                Pl/Python
Http://www.eqsoft.net                                                       1/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
¿Que es Pl/Python?




       http://www.postgresql.org                      http://www.python.org

       http://www.postgresql.org/docs/9.2/static/plpython.html

EQ Soft Consultoría y Soporte E.I.R.L.                                        Pl/Python
Http://www.eqsoft.net                                                               2/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
¿Que es Pl/Python?
       ●Es un lenguaje para escribir funciones
        en PostgreSQL.
       ●Pero OjO ....... NO es un reemplazo a

        SQL o PL/SQL.
       ●Es una manera de extender la

        funcionalidad de PostgreSQL a labores
        que no se pueden llevar a cabo con
        Pl/PgSQL.

EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   3/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
¿Que no desde esperar de Pl/Python?
       ● Que sea más rápido para manipular data que
         Pl/PgSQL.
       ● Que puedas levantar todas las librerías

         habidas y por haber de Python para diversas
         labores, quizás la mayoría si pero no todas.
       ● Ahorrar recursos de procesamiento/ram en el

         servidor para tus funciones (procedimientos
         almacenados).


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   4/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
¿En que casos usar Pl/Python?
       ●   Cuando se requiera realizar labores
           extendidas en la base de datos, por ejemplo:
           mandar correos, realizar cálculos
           matemáticos avanzados, importar o generar
           datos formateados de forma extraña, etc.

       ●   Cuando sabes programar en Python y no en
           Pl/Pgsql y no quieres aprender a programar
           en otro lenguaje.

EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   5/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   6/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python

   Comandos básicos:

   print “hola mundo” <­­ imprime algo en la consola

   A = 22             <­­ crea la variable “A”

   print A            <­­ imprime el valor almacenado
                          en la variable “A”

   b=input(“dame #:”) <­­ solicita en la consola
                          ingresar un valor y lo
                          guarda en la variable “b”



EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   7/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python

   (Los ... significan que debes presionar un “tab”)

   a=3
   if a < 3:
   ...print “es menor que 3”
   else:
   ...print “es mayor o igual que 3”

   presionar 2 veces “enter” en la ultima linmensaje:




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   8/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python

   Para programar en Python es mejor utilizar un editor
   de texto cualquiera o alguno especializado en este
   lenguaje, grabar el programa como un archivo de
   extensión “.py” (no obligatorio) y luego ejecutarlos
   así:

            python holamundo.py

   El resultado lo veremos en la consola del sistema
   operativo.




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                   9/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Arreglos.

   * Las “tuplas”, son conjuntos de datos como en una lista
   pero es inmutable, no se puede añadir o borrar elementos.

        A='a',2,'c',4
        for valor in A:
        ...print valor

   Los elementos entre paréntesis denotan una tupla dentro
   de otra.

        A='a',2,'c',4,('e',6)
        for valor in A:
        ...print valor


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 10/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Arreglos.

   * Los “diccionarios” son como los arreglos tradicionales,
   tienen un índice y un valor como parte de su estructura, se
   puede añadir y quitar datos.

      Arreglo={'a':123,'b':'holaprint Arreglo['b']
      mundo',3:122}

   ahora veamos que obtenemos con esto:
      for c in Arreglo:
      ...print c

   Y ahora así:
      for c in Arreglo:
      ...print Arreglo[c]

EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 11/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   El manejo de cadenas en Python es bastante avanzado y no
   requiere funciones externas.

   Concatenar:
      a='hola' a='aaa'
      b='mundo' a+='bbb'
      print a+' '+b print a

   Subcadena (el indice siempre empieza en 0):
      a='hola mundo'  
      print a[3] <­­ un dígito
      print a[5:10] <­ una sección de cadena, como
                      “substr”
      print a[5:] <­ desde la posición 5 hasta el
                     final de la cadena
EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 12/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Subcadena (el indice siempre empieza en 0):

   a='hola mundo'
   print a[:5]   <­­ corta desde el inicio hasta la posición 5
   print a[:­5]  <­­ corta los últimos 5 caracteres de la cadena
   print a[2:­5] <­­ corta desde la posición 2 hasta los 5
                     Últimos caracteres de una cadena

   Una manera de armar cadenas formateadas es así:
     X=12
     Y=11
     A=”el valor de X es: %d y de Y es:%d” % (X,Y)
     print A

   Len, retorna la cantidad de caracteres de una cadena

EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 13/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Estructuras de control – WHILE:

      X=10
      Y=0
      while Y < X:
      ...Y += 1
      ...print Y




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 14/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Estructuras de control – FOR:

   for a in range(1,10): <­­­ ejecuta del 1 al 9
   ...print a

   for a in range(10):   <­­­ ejecuta del 0 al 9
   ...print a

   En una lista de valores:
   for a in (1,10,5,7):  <­­­ puede ser una tupla o un 
   ..print a                  diccionario




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 15/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Estructuras de control – FOR:

   En un rango de números :
   for a in range(1,10,2):  <­­­ejecuta del 1 al 9
   ...print a                   saltando de 2 en 2

   for a in range(10,1,­3): <­­­ejecuta del 10 al 1
   ...print a                   saltando de 3 en 3

   for a,b in ((1,4),(2,5),(3,6)): <­­­ solo se acepta
   ...print a                           valores
   ...print b                           numéricos
                                        enteros


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 16/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python
   Estructuras de control Break:
   Permite salir de un loop
     for c in range(1,10): <­­­ ejecuta del 1 al 6
     ...print c
     ...if c > 5:
     ......break

   Estructuras de control Continue:
   Permite volver a iterar sin ejecutar el código que
   continua en el loop
     for c in range(1,10): <­­­ ejecuta del 1 al 5
     ...if c > 5: 
     ......continue
     ...print c

    
EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 17/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Conoce Python

                                  CHEVERE!!!!!

                           YA SABES PYTHON


          Ahora hagamoslo conversar con
                   PostgreSQL


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 18/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

                                   Instalando:

                    Debian, Ubuntu y otros:
           apt-get install postgresql-plpython-9.1

          Centos, Redhat, Fedora y otros:
                                      yum install




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 19/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

   Instalamos el Pl/Python:
   sudo apt­get install postgresql­plpython­9.1

   Creamos una DB parta trabajar:
   createdb dbpython0 ­U USER_ADMIN_NAME

   Instalamos el lenguaje en la DB:
   createlang plpythonu python0 ­U USER_ADMIN_NAME




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 20/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

   Instalamos el Pl/Python:
   sudo apt­get install postgresql­plpython­9.1

   Creamos una DB parta trabajar:
   createdb dbpython0 ­U USER_ADMIN_NAME

   Instalamos el lenguaje en la DB:
   createlang plpythonu python0 ­U USER_ADMIN_NAME




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 21/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

   Ahora a probarlo, en un editor de texto escriba
   esto y lo grabamos como “ejemplo1.plpy” :
   CREATE FUNCTION py_fecha ()
     RETURNS integer
   AS $$
     import os
     os.system("date >> /[RUTA]/fecha.txt")
     return 1
   $$ LANGUAGE plpythonu;

   Creamos en /[RUTA] el file “fecha.txt” con:
   touch fecha.txt
   Chmod 777 fecha.txt   <­­ le damos todos los accesos


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 22/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

   Importamos nuestro script en la db:
   [root@hostname]psql python0 ­U USER_NAME
   python0=#i /[RUTA]/ejemplo1.plpy

   Ejecutar la función creada:
   python0=# select py_fecha();
    py_fecha 
   ­­­­­­­­­­
           1

   Verificamos que paso (en consola):
   [root@hostname]cat /[ruta]/fecha.txt



EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 23/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python

   Vamos a enviar un email.

   Para ciertas funciones necesitamos instalar algunas
   librerias adicionales de Python, en este caso
   usaremos una llamada “smtplib” que ya viene
   instalada por defecto.

   Vamos a instalar un servidor de correos simple:
       sudo apt­get install exim4

   El log del server podemos verlo así:
       sudo tail ­f /var/log/exim4/mainlog



EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 24/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python
   Esta es nuestra función para enviar e­mails:
   CREATE FUNCTION py_mail ()
     RETURNS integer
   AS $$
     import smtplib
     to="el_que_recibe@mail.com"
     sender="el_que_envia@mail.com"
     smtpserver = smtplib.SMTP("localhost")
     smtpserver.ehlo()
     smtpserver.ehlo
     header = 'To:' + to + 'n' + 'From: '+ sender + 'n' + 'Subject:testn'
     msg = header + 'n Mensaje de prueba nn'
     smtpserver.sendmail(sender, to, msg)
     smtpserver.close()
     return 1
   $$ LANGUAGE plpythonu;



EQ Soft Consultoría y Soporte E.I.R.L.                               Pl/Python
Http://www.eqsoft.net                                                    25/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python
   Ejecutamos la función y verificamos el log del EXIM4 para
   ver si llego el email.

   Algo así se verá:

   2012-10-10 23:00:25 1TM9wf-0004nf-0o <= el_que_envia@mail.com
   H=localhost ([127.0.1.1]) [127.0.0.1] P=esmtp S=381
   2012-10-10 23:00:25 1TM9wf-0004nf-0o ** el_que_recibe@mail.com R=nonlocal:
   Mailing to remote domains not supported
   2012-10-10 23:00:25 1TM9wf-0004nh-In <= <> R=1TM9wf-0004nf-0o
   U=Debian-exim P=local S=1201
   2012-10-10 23:00:25 1TM9wf-0004nf-0o Completed
   2012-10-10 23:00:25 1TM9wf-0004nh-In ** el_que_envia@mail.com R=nonlocal:
   Mailing to remote domains not supported
   2012-10-10 23:00:25 1TM9wf-0004nh-In Frozen (delivery error message)




EQ Soft Consultoría y Soporte E.I.R.L.                              Pl/Python
Http://www.eqsoft.net                                                   26/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python
   Ahora vamos a manipular datos.

   Pl/Python requiere instalar la libreria de PostgreSQL para
   Python (¿primer choque emocional?)

     sudo apt­get install python­pygresql

   Vamos a crear una tablita:

     python0=# create table datos( numero int, texto char(10));
     CREATE TABLE
     python0=# insert into datos values (1,'A'), ('2','B'), (3,'C');
     INSERT 0 3




EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 27/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python
   Escribimos el siguiente script:

   CREATE FUNCTION py_data ( registro integer, valor char)
     RETURNS integer
   AS $$
     import pg

     dbPG= pg.connect(dbname='python0',user='dbadmin',passwd='dbadmin',host='localhost')

     qry = "update datos set texto = '" + valor + "' where numero = " + str(registro)

     resultado = dbPG.query(qry)
     return 1
   $$ LANGUAGE plpythonu;




EQ Soft Consultoría y Soporte E.I.R.L.                                         Pl/Python
Http://www.eqsoft.net                                                              28/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python
   Lo subimos y los ejecutamos:

   python0=# i /home/ernesto/plpython/ejemplo3.py
   CREATE FUNCTION

   python0=# select py_data(1,'BB');
    py_data 
   ­­­­­­­­­
          1

   python0=# select * from datos;
    numero |   texto    
   ­­­­­­­­+­­­­­­­­­­­­
         2 | B         
         3 | C         
         1 | BB        


EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 29/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
Pl/Python



                  ESO ES TODO

                              GRACIAS

EQ Soft Consultoría y Soporte E.I.R.L.                            Pl/Python
Http://www.eqsoft.net                                                 30/30
informes@eqsoft.net
Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957

Weitere ähnliche Inhalte

Andere mochten auch

Introduccion a Python por Facundo Batista
Introduccion a Python por Facundo BatistaIntroduccion a Python por Facundo Batista
Introduccion a Python por Facundo BatistaRoberto Allende
 
Python: programacion para el Poder Popular
Python: programacion para el Poder PopularPython: programacion para el Poder Popular
Python: programacion para el Poder PopularFrancisco Palm
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)CAChemE
 
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPEMini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPEMarcel Caraciolo
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1zeta2015
 
Aprendizaje software libre
Aprendizaje software libreAprendizaje software libre
Aprendizaje software libreFrancisco Palm
 
Big Data en Beneficio del Ciudadano
Big Data en Beneficio del CiudadanoBig Data en Beneficio del Ciudadano
Big Data en Beneficio del CiudadanoEQ SOFT EIRL
 
Social Media Marketing
Social Media MarketingSocial Media Marketing
Social Media MarketingEQ SOFT EIRL
 
Iniciativa cluster lima tech
Iniciativa cluster lima techIniciativa cluster lima tech
Iniciativa cluster lima techEQ SOFT EIRL
 
Que es linux y que es Software Libre
Que es linux y que es Software LibreQue es linux y que es Software Libre
Que es linux y que es Software LibreEQ SOFT EIRL
 
Negocios con software libre
Negocios con software libreNegocios con software libre
Negocios con software libreEQ SOFT EIRL
 
Vigenere encryption Engine for Educational Purposes
Vigenere encryption Engine for Educational PurposesVigenere encryption Engine for Educational Purposes
Vigenere encryption Engine for Educational PurposesEQ SOFT EIRL
 
Manual de como conformar Consorcios
Manual de como conformar ConsorciosManual de como conformar Consorcios
Manual de como conformar ConsorciosEQ SOFT EIRL
 
Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0EQ SOFT EIRL
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQLEQ SOFT EIRL
 

Andere mochten auch (20)

Comandos em python
Comandos em pythonComandos em python
Comandos em python
 
Introduccion a Python por Facundo Batista
Introduccion a Python por Facundo BatistaIntroduccion a Python por Facundo Batista
Introduccion a Python por Facundo Batista
 
A linguagem Python
A linguagem Python A linguagem Python
A linguagem Python
 
Python: programacion para el Poder Popular
Python: programacion para el Poder PopularPython: programacion para el Poder Popular
Python: programacion para el Poder Popular
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)
 
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPEMini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
 
Python guia01 1
Python guia01 1Python guia01 1
Python guia01 1
 
Python
PythonPython
Python
 
Aprendizaje software libre
Aprendizaje software libreAprendizaje software libre
Aprendizaje software libre
 
Aprender con python
Aprender con pythonAprender con python
Aprender con python
 
Big Data en Beneficio del Ciudadano
Big Data en Beneficio del CiudadanoBig Data en Beneficio del Ciudadano
Big Data en Beneficio del Ciudadano
 
Social Media Marketing
Social Media MarketingSocial Media Marketing
Social Media Marketing
 
Iniciativa cluster lima tech
Iniciativa cluster lima techIniciativa cluster lima tech
Iniciativa cluster lima tech
 
Que es linux y que es Software Libre
Que es linux y que es Software LibreQue es linux y que es Software Libre
Que es linux y que es Software Libre
 
Negocios con software libre
Negocios con software libreNegocios con software libre
Negocios con software libre
 
Vigenere encryption Engine for Educational Purposes
Vigenere encryption Engine for Educational PurposesVigenere encryption Engine for Educational Purposes
Vigenere encryption Engine for Educational Purposes
 
Cluster lima tech
Cluster lima techCluster lima tech
Cluster lima tech
 
Manual de como conformar Consorcios
Manual de como conformar ConsorciosManual de como conformar Consorcios
Manual de como conformar Consorcios
 
Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQL
 

Ähnlich wie Programación en Pl/Python

clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxclase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxJulianSimonetta
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RFrancisco Palm
 
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programación
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programaciónSEO on the Beach 2023 Alfonso Moure: IA como interfaz de programación
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programaciónAlfonso Moure Ortega
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mariano Reingart
 
Python_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfPython_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfCeth1
 
Introducción a la programación en Python
Introducción a la programación en PythonIntroducción a la programación en Python
Introducción a la programación en PythonCodeSyntax
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologiasofi-armybts
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologiasofi-armybts
 
Trabajo de tecnologia (1)
Trabajo de tecnologia (1) Trabajo de tecnologia (1)
Trabajo de tecnologia (1) Camila Paz
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologiamichellmaria
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 

Ähnlich wie Programación en Pl/Python (20)

clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptxclase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
clase-Unidad1 y Unidad2-Pseudo-Print-Scanf-IF (1).pptx
 
Python Multiuso
Python MultiusoPython Multiuso
Python Multiuso
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
 
Python101
Python101Python101
Python101
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programación
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programaciónSEO on the Beach 2023 Alfonso Moure: IA como interfaz de programación
SEO on the Beach 2023 Alfonso Moure: IA como interfaz de programación
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015
 
Eventos intropython
Eventos intropythonEventos intropython
Eventos intropython
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 
Python_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdfPython_Module_01_Courtesy.pdf
Python_Module_01_Courtesy.pdf
 
Introducción a la programación en Python
Introducción a la programación en PythonIntroducción a la programación en Python
Introducción a la programación en Python
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologia
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologia
 
Trabajo de tecnologia (1)
Trabajo de tecnologia (1) Trabajo de tecnologia (1)
Trabajo de tecnologia (1)
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologia
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Python workshop
Python workshopPython workshop
Python workshop
 

Mehr von EQ SOFT EIRL

Libro sobre exportación de servicios post Covid-19
Libro sobre exportación de servicios post Covid-19Libro sobre exportación de servicios post Covid-19
Libro sobre exportación de servicios post Covid-19EQ SOFT EIRL
 
Peruanos en Twitter
Peruanos en TwitterPeruanos en Twitter
Peruanos en TwitterEQ SOFT EIRL
 
Recomendaciones Para el Tratamiento de Datos en Inteligencia Artificial
Recomendaciones Para el Tratamiento de Datos en Inteligencia ArtificialRecomendaciones Para el Tratamiento de Datos en Inteligencia Artificial
Recomendaciones Para el Tratamiento de Datos en Inteligencia ArtificialEQ SOFT EIRL
 
Centros Regionales de Innovación Aplicada
Centros Regionales de Innovación AplicadaCentros Regionales de Innovación Aplicada
Centros Regionales de Innovación AplicadaEQ SOFT EIRL
 
EQ Soft: Soluciones de innovación agraria
EQ Soft: Soluciones de innovación agrariaEQ Soft: Soluciones de innovación agraria
EQ Soft: Soluciones de innovación agrariaEQ SOFT EIRL
 
Transformación Digital en Logística
Transformación Digital en LogísticaTransformación Digital en Logística
Transformación Digital en LogísticaEQ SOFT EIRL
 
Propuestas de innovacón financiera
Propuestas de innovacón financieraPropuestas de innovacón financiera
Propuestas de innovacón financieraEQ SOFT EIRL
 
Clusters Empresariales en Latinoamérica
Clusters Empresariales en LatinoaméricaClusters Empresariales en Latinoamérica
Clusters Empresariales en LatinoaméricaEQ SOFT EIRL
 
Inteligencia Artificial en la Administración Pública
Inteligencia Artificial en la Administración PúblicaInteligencia Artificial en la Administración Pública
Inteligencia Artificial en la Administración PúblicaEQ SOFT EIRL
 
Inteligencia artificial para las empresas 2019
Inteligencia artificial para las empresas 2019Inteligencia artificial para las empresas 2019
Inteligencia artificial para las empresas 2019EQ SOFT EIRL
 
Platique.me solución integral de Smart ChatBot
Platique.me solución integral de Smart ChatBotPlatique.me solución integral de Smart ChatBot
Platique.me solución integral de Smart ChatBotEQ SOFT EIRL
 
Logos Dictados - solución de Speech to Text
Logos Dictados - solución de Speech to TextLogos Dictados - solución de Speech to Text
Logos Dictados - solución de Speech to TextEQ SOFT EIRL
 
Logos Biblios - Gestión de Conocimientos
Logos Biblios - Gestión de ConocimientosLogos Biblios - Gestión de Conocimientos
Logos Biblios - Gestión de ConocimientosEQ SOFT EIRL
 
Logos, Framework de Inteligencia Artificial
Logos, Framework de Inteligencia ArtificialLogos, Framework de Inteligencia Artificial
Logos, Framework de Inteligencia ArtificialEQ SOFT EIRL
 
Logos: Framework de Inteligencia Artificial
Logos: Framework de Inteligencia ArtificialLogos: Framework de Inteligencia Artificial
Logos: Framework de Inteligencia ArtificialEQ SOFT EIRL
 
Presentación de Logos en el Cade Digital
Presentación de Logos en el Cade DigitalPresentación de Logos en el Cade Digital
Presentación de Logos en el Cade DigitalEQ SOFT EIRL
 
Logos Codex: Plataforma de Big Data
Logos Codex: Plataforma de Big DataLogos Codex: Plataforma de Big Data
Logos Codex: Plataforma de Big DataEQ SOFT EIRL
 
Portafolio de Productos y Servicios de EqSoft
Portafolio de Productos y Servicios de EqSoftPortafolio de Productos y Servicios de EqSoft
Portafolio de Productos y Servicios de EqSoftEQ SOFT EIRL
 
Soluciones de RPA para automatizar procesos
Soluciones de RPA para automatizar procesosSoluciones de RPA para automatizar procesos
Soluciones de RPA para automatizar procesosEQ SOFT EIRL
 

Mehr von EQ SOFT EIRL (20)

Libro sobre exportación de servicios post Covid-19
Libro sobre exportación de servicios post Covid-19Libro sobre exportación de servicios post Covid-19
Libro sobre exportación de servicios post Covid-19
 
Peruanos en Twitter
Peruanos en TwitterPeruanos en Twitter
Peruanos en Twitter
 
Recomendaciones Para el Tratamiento de Datos en Inteligencia Artificial
Recomendaciones Para el Tratamiento de Datos en Inteligencia ArtificialRecomendaciones Para el Tratamiento de Datos en Inteligencia Artificial
Recomendaciones Para el Tratamiento de Datos en Inteligencia Artificial
 
Centros Regionales de Innovación Aplicada
Centros Regionales de Innovación AplicadaCentros Regionales de Innovación Aplicada
Centros Regionales de Innovación Aplicada
 
EQ Soft: Soluciones de innovación agraria
EQ Soft: Soluciones de innovación agrariaEQ Soft: Soluciones de innovación agraria
EQ Soft: Soluciones de innovación agraria
 
Transformación Digital en Logística
Transformación Digital en LogísticaTransformación Digital en Logística
Transformación Digital en Logística
 
Propuestas de innovacón financiera
Propuestas de innovacón financieraPropuestas de innovacón financiera
Propuestas de innovacón financiera
 
Clusters Empresariales en Latinoamérica
Clusters Empresariales en LatinoaméricaClusters Empresariales en Latinoamérica
Clusters Empresariales en Latinoamérica
 
Inteligencia Artificial en la Administración Pública
Inteligencia Artificial en la Administración PúblicaInteligencia Artificial en la Administración Pública
Inteligencia Artificial en la Administración Pública
 
Inteligencia artificial para las empresas 2019
Inteligencia artificial para las empresas 2019Inteligencia artificial para las empresas 2019
Inteligencia artificial para las empresas 2019
 
Platique.me solución integral de Smart ChatBot
Platique.me solución integral de Smart ChatBotPlatique.me solución integral de Smart ChatBot
Platique.me solución integral de Smart ChatBot
 
Logos Dictados - solución de Speech to Text
Logos Dictados - solución de Speech to TextLogos Dictados - solución de Speech to Text
Logos Dictados - solución de Speech to Text
 
Logos Biblios - Gestión de Conocimientos
Logos Biblios - Gestión de ConocimientosLogos Biblios - Gestión de Conocimientos
Logos Biblios - Gestión de Conocimientos
 
Logos, Framework de Inteligencia Artificial
Logos, Framework de Inteligencia ArtificialLogos, Framework de Inteligencia Artificial
Logos, Framework de Inteligencia Artificial
 
Internet of Food
Internet of FoodInternet of Food
Internet of Food
 
Logos: Framework de Inteligencia Artificial
Logos: Framework de Inteligencia ArtificialLogos: Framework de Inteligencia Artificial
Logos: Framework de Inteligencia Artificial
 
Presentación de Logos en el Cade Digital
Presentación de Logos en el Cade DigitalPresentación de Logos en el Cade Digital
Presentación de Logos en el Cade Digital
 
Logos Codex: Plataforma de Big Data
Logos Codex: Plataforma de Big DataLogos Codex: Plataforma de Big Data
Logos Codex: Plataforma de Big Data
 
Portafolio de Productos y Servicios de EqSoft
Portafolio de Productos y Servicios de EqSoftPortafolio de Productos y Servicios de EqSoft
Portafolio de Productos y Servicios de EqSoft
 
Soluciones de RPA para automatizar procesos
Soluciones de RPA para automatizar procesosSoluciones de RPA para automatizar procesos
Soluciones de RPA para automatizar procesos
 

Programación en Pl/Python

  • 1. Programando con Pl/Python Ernesto Quiñones Azcárate ernesto@eqsoft.net EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 1/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 2. ¿Que es Pl/Python? http://www.postgresql.org http://www.python.org http://www.postgresql.org/docs/9.2/static/plpython.html EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 2/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 3. ¿Que es Pl/Python? ●Es un lenguaje para escribir funciones en PostgreSQL. ●Pero OjO ....... NO es un reemplazo a SQL o PL/SQL. ●Es una manera de extender la funcionalidad de PostgreSQL a labores que no se pueden llevar a cabo con Pl/PgSQL. EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 3/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 4. ¿Que no desde esperar de Pl/Python? ● Que sea más rápido para manipular data que Pl/PgSQL. ● Que puedas levantar todas las librerías habidas y por haber de Python para diversas labores, quizás la mayoría si pero no todas. ● Ahorrar recursos de procesamiento/ram en el servidor para tus funciones (procedimientos almacenados). EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 4/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 5. ¿En que casos usar Pl/Python? ● Cuando se requiera realizar labores extendidas en la base de datos, por ejemplo: mandar correos, realizar cálculos matemáticos avanzados, importar o generar datos formateados de forma extraña, etc. ● Cuando sabes programar en Python y no en Pl/Pgsql y no quieres aprender a programar en otro lenguaje. EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 5/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 6. Conoce Python EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 6/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 7. Conoce Python Comandos básicos: print “hola mundo” <­­ imprime algo en la consola A = 22             <­­ crea la variable “A” print A            <­­ imprime el valor almacenado                        en la variable “A” b=input(“dame #:”) <­­ solicita en la consola                        ingresar un valor y lo                        guarda en la variable “b” EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 7/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 8. Conoce Python (Los ... significan que debes presionar un “tab”) a=3 if a < 3: ...print “es menor que 3” else: ...print “es mayor o igual que 3” presionar 2 veces “enter” en la ultima linmensaje: EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 8/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 9. Conoce Python Para programar en Python es mejor utilizar un editor de texto cualquiera o alguno especializado en este lenguaje, grabar el programa como un archivo de extensión “.py” (no obligatorio) y luego ejecutarlos así:          python holamundo.py El resultado lo veremos en la consola del sistema operativo. EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 9/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 10. Conoce Python Arreglos. * Las “tuplas”, son conjuntos de datos como en una lista pero es inmutable, no se puede añadir o borrar elementos.      A='a',2,'c',4      for valor in A:      ...print valor Los elementos entre paréntesis denotan una tupla dentro de otra.      A='a',2,'c',4,('e',6)      for valor in A:      ...print valor EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 10/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 11. Conoce Python Arreglos. * Los “diccionarios” son como los arreglos tradicionales, tienen un índice y un valor como parte de su estructura, se puede añadir y quitar datos.    Arreglo={'a':123,'b':'holaprint Arreglo['b']    mundo',3:122} ahora veamos que obtenemos con esto:    for c in Arreglo:    ...print c Y ahora así:    for c in Arreglo:    ...print Arreglo[c] EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 11/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 12. Conoce Python El manejo de cadenas en Python es bastante avanzado y no requiere funciones externas. Concatenar:    a='hola' a='aaa'    b='mundo' a+='bbb'    print a+' '+b print a Subcadena (el indice siempre empieza en 0):    a='hola mundo'      print a[3] <­­ un dígito    print a[5:10] <­ una sección de cadena, como                    “substr”    print a[5:] <­ desde la posición 5 hasta el                   final de la cadena EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 12/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 13. Conoce Python Subcadena (el indice siempre empieza en 0): a='hola mundo' print a[:5]   <­­ corta desde el inicio hasta la posición 5 print a[:­5]  <­­ corta los últimos 5 caracteres de la cadena print a[2:­5] <­­ corta desde la posición 2 hasta los 5                   Últimos caracteres de una cadena Una manera de armar cadenas formateadas es así:   X=12   Y=11   A=”el valor de X es: %d y de Y es:%d” % (X,Y)   print A Len, retorna la cantidad de caracteres de una cadena EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 13/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 14. Conoce Python Estructuras de control – WHILE:    X=10    Y=0    while Y < X:    ...Y += 1    ...print Y EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 14/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 15. Conoce Python Estructuras de control – FOR: for a in range(1,10): <­­­ ejecuta del 1 al 9 ...print a for a in range(10):   <­­­ ejecuta del 0 al 9 ...print a En una lista de valores: for a in (1,10,5,7):  <­­­ puede ser una tupla o un  ..print a                  diccionario EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 15/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 16. Conoce Python Estructuras de control – FOR: En un rango de números : for a in range(1,10,2):  <­­­ejecuta del 1 al 9 ...print a                   saltando de 2 en 2 for a in range(10,1,­3): <­­­ejecuta del 10 al 1 ...print a                   saltando de 3 en 3 for a,b in ((1,4),(2,5),(3,6)): <­­­ solo se acepta ...print a                           valores ...print b                           numéricos                                      enteros EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 16/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 17. Conoce Python Estructuras de control Break: Permite salir de un loop   for c in range(1,10): <­­­ ejecuta del 1 al 6   ...print c   ...if c > 5:   ......break Estructuras de control Continue: Permite volver a iterar sin ejecutar el código que continua en el loop for c in range(1,10): <­­­ ejecuta del 1 al 5   ...if c > 5:    ......continue   ...print c   EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 17/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 18. Conoce Python CHEVERE!!!!! YA SABES PYTHON Ahora hagamoslo conversar con PostgreSQL EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 18/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 19. Pl/Python Instalando: Debian, Ubuntu y otros: apt-get install postgresql-plpython-9.1 Centos, Redhat, Fedora y otros: yum install EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 19/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 20. Pl/Python Instalamos el Pl/Python: sudo apt­get install postgresql­plpython­9.1 Creamos una DB parta trabajar: createdb dbpython0 ­U USER_ADMIN_NAME Instalamos el lenguaje en la DB: createlang plpythonu python0 ­U USER_ADMIN_NAME EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 20/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 21. Pl/Python Instalamos el Pl/Python: sudo apt­get install postgresql­plpython­9.1 Creamos una DB parta trabajar: createdb dbpython0 ­U USER_ADMIN_NAME Instalamos el lenguaje en la DB: createlang plpythonu python0 ­U USER_ADMIN_NAME EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 21/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 22. Pl/Python Ahora a probarlo, en un editor de texto escriba esto y lo grabamos como “ejemplo1.plpy” : CREATE FUNCTION py_fecha ()   RETURNS integer AS $$   import os   os.system("date >> /[RUTA]/fecha.txt")   return 1 $$ LANGUAGE plpythonu; Creamos en /[RUTA] el file “fecha.txt” con: touch fecha.txt Chmod 777 fecha.txt   <­­ le damos todos los accesos EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 22/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 23. Pl/Python Importamos nuestro script en la db: [root@hostname]psql python0 ­U USER_NAME python0=#i /[RUTA]/ejemplo1.plpy Ejecutar la función creada: python0=# select py_fecha();  py_fecha  ­­­­­­­­­­         1 Verificamos que paso (en consola): [root@hostname]cat /[ruta]/fecha.txt EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 23/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 24. Pl/Python Vamos a enviar un email. Para ciertas funciones necesitamos instalar algunas librerias adicionales de Python, en este caso usaremos una llamada “smtplib” que ya viene instalada por defecto. Vamos a instalar un servidor de correos simple:     sudo apt­get install exim4 El log del server podemos verlo así:     sudo tail ­f /var/log/exim4/mainlog EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 24/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 25. Pl/Python Esta es nuestra función para enviar e­mails: CREATE FUNCTION py_mail ()   RETURNS integer AS $$   import smtplib   to="el_que_recibe@mail.com"   sender="el_que_envia@mail.com"   smtpserver = smtplib.SMTP("localhost")   smtpserver.ehlo()   smtpserver.ehlo   header = 'To:' + to + 'n' + 'From: '+ sender + 'n' + 'Subject:testn'   msg = header + 'n Mensaje de prueba nn'   smtpserver.sendmail(sender, to, msg)   smtpserver.close()   return 1 $$ LANGUAGE plpythonu; EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 25/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 26. Pl/Python Ejecutamos la función y verificamos el log del EXIM4 para ver si llego el email. Algo así se verá: 2012-10-10 23:00:25 1TM9wf-0004nf-0o <= el_que_envia@mail.com H=localhost ([127.0.1.1]) [127.0.0.1] P=esmtp S=381 2012-10-10 23:00:25 1TM9wf-0004nf-0o ** el_que_recibe@mail.com R=nonlocal: Mailing to remote domains not supported 2012-10-10 23:00:25 1TM9wf-0004nh-In <= <> R=1TM9wf-0004nf-0o U=Debian-exim P=local S=1201 2012-10-10 23:00:25 1TM9wf-0004nf-0o Completed 2012-10-10 23:00:25 1TM9wf-0004nh-In ** el_que_envia@mail.com R=nonlocal: Mailing to remote domains not supported 2012-10-10 23:00:25 1TM9wf-0004nh-In Frozen (delivery error message) EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 26/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 27. Pl/Python Ahora vamos a manipular datos. Pl/Python requiere instalar la libreria de PostgreSQL para Python (¿primer choque emocional?)   sudo apt­get install python­pygresql Vamos a crear una tablita:   python0=# create table datos( numero int, texto char(10));   CREATE TABLE   python0=# insert into datos values (1,'A'), ('2','B'), (3,'C');   INSERT 0 3 EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 27/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 28. Pl/Python Escribimos el siguiente script: CREATE FUNCTION py_data ( registro integer, valor char)   RETURNS integer AS $$   import pg   dbPG= pg.connect(dbname='python0',user='dbadmin',passwd='dbadmin',host='localhost')   qry = "update datos set texto = '" + valor + "' where numero = " + str(registro)   resultado = dbPG.query(qry)   return 1 $$ LANGUAGE plpythonu; EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 28/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 29. Pl/Python Lo subimos y los ejecutamos: python0=# i /home/ernesto/plpython/ejemplo3.py CREATE FUNCTION python0=# select py_data(1,'BB');  py_data  ­­­­­­­­­        1 python0=# select * from datos;  numero |   texto     ­­­­­­­­+­­­­­­­­­­­­       2 | B                3 | C                1 | BB         EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 29/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957
  • 30. Pl/Python ESO ES TODO GRACIAS EQ Soft Consultoría y Soporte E.I.R.L. Pl/Python Http://www.eqsoft.net 30/30 informes@eqsoft.net Teléfonos: (51) 01–5645744 / 01-5645424 / 997244926 / 997003957