[pyar] Conexiones paralelas a postgresql

Gustavo Martínez gmpuljak en yahoo.com.ar
Jue Jun 18 17:29:54 ART 2015


El 18/06/15 a las 17:13, Pablo Mouzo escibió:
> 2015-06-18 15:31 GMT-03:00 Gustavo Martínez <gmpuljak en yahoo.com.ar 
> <mailto:gmpuljak en yahoo.com.ar>>:
>
>     Hola,
>
>     yo utilizo python para procesar información espacial que tengo en
>     una base postgresql con postgis. Para conectarme utilizo psycopg2.
>     Para algunos procesos, que son iguales pero para diferentes
>     períodos de tiempo, escribí algunas funciones que puse en un módulo.
>     Lo que no tengo claro es cómo manejar las conexiones a la base de
>     datos. Por ejemplo, si quiero ejecutar 2 scripts que utilizan la
>     misma función pero para diferentes períodos, cómo hago?
>     Las funciones del módulo utilizan las conexiones porque la mayor
>     parte del procesamiento se hace a través de SQL sobre la base de
>     datos.
>     Si no queda claro, puedo explicar mejor mi caso.
>     Muchas gracias.
>
>     -- 
>     Gustavo Martínez
>
>
> Tenés al menos 2 opciones:
> - Podes abrir una nueva conexión para cada función que hace algo 
> contra la base de datos (ejemplo: django abre una nueva conexión por 
> cada request)
> - Podes tener un pool de conexiones para limitar la cantidad de 
> conexiones abiertas y cosas que corren en paralelo en la base de datos [0]
>
> Dicho eso, correr demasiadas cosas en paralelo en la DB puede ser más 
> lento que correrlas en serie o limitando la cantidad de cosas que 
> corren a la vez.
>
> [0] http://initd.org/psycopg/docs/pool.html
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Mis conocimientos de python son limitados, he ido aprendiendo lo 
suficiente para utilizarlo en mi trabajo, soy un biólogo que trabaja con 
SIG y bases de datos.
Mi uso  es restringido, no voy a tener más de 2-3 scripts en paralelo 
procesando información.
Mi duda es, si yo tengo el siguiente código en mi módulo (es una parte):

conn=psycopg2.connect("host='localhost' port=5432 dbname='pesca' 
user='gustavo' password='*****'")
cur=conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

def excluyo_puertos(idmon):
     global cur
     cur.execute("""select st_dwithin(v3.vms.geom,(select 
st_collect(geom) from datos.puertos),0.034) as 
des,st_dwithin(v3.vms.geom,(select st_collect(geom) from 
datos.puertos),0.034) as sal from v3.vms where idvms=%s""" ,(idmon,))
     monitvalido = cur.fetchall()
     if (monitvalido[0]['des']== True or monitvalido[0]['sal']== True):
         cur.execute("""update v3.vms set pesca = 'F', rectang = 'F', 
criterio = 1 where idvms=%s""" ,(idmon,))
         cur.execute("""update v3.monit set pesca = 'F', rectang = 'F', 
criterio = 1 where idvms=%s""" ,(idmon,))
         conn.commit()
         return True
     else:
         return False


¿Cómo hago las conexiones y las uso en los diferentes programas si 
quiero ejecutar en simultáneo 2 procesos que llaman a excluyo_puertos?

Gracias

-- 
Gustavo Martínez
Skype: gmpuljak
Linkedin: http://ar.linkedin.com/in/gustavomartínezpuljak

“Que la tierra se vaya haciendo camino ante tus pasos,
que el viento sople siempre a tus espaldas,
que el sol brille cálido sobre tu cara,
que la lluvia caiga suavemente sobre tus campos y,
hasta tanto volvamos a encontrarnos,
que Dios te lleve en la palma de su mano.”

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150618/8f79b13c/attachment-0001.html>


More information about the pyar mailing list