[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