Author Topic: Python mysql  (Read 5061 times)

Guadafanex

  • Newbie
  • *
  • Posts: 12
  • Karma: 0
    • View Profile
Python mysql
« on: Febrero 19, 2010, 07:47:17 am »
Buenas,

Estoy haciendo una aplicación que lee de un archivo de MS excel unos hostname y si cumple una condición en el Excel envía un mail al propietario del equipo.

Lo tengo todo listo: sólo me falta sacar de una bd mysql las direcciones de correo:

Code: [Select]
registro.execute("SELECT mail_uno FROM datos WHERE hostname = '%s'" % nombre.value)
resu = registro.fetchall()
print resu

Pero me saca el diccionario así:

 
Code: [Select]
{'mail_uno': 'correo@correo.com'}
¿Cómo puedo hacer para que me saque sólo la dirección de correo?

Gracias y un saludo.
« Last Edit: Febrero 19, 2010, 07:48:53 am by Guadafanex »

Guadafanex

  • Newbie
  • *
  • Posts: 12
  • Karma: 0
    • View Profile
Re: Python mysql
« Reply #1 on: Febrero 20, 2010, 06:13:13 am »
Buenas,

Ya lo he solucionado con el "for", que me faltaba:

registro.execute("SELECT mail_uno FROM datos WHERE hostname = '%s'" % nombre.value)
for reg in registro:
          reg['mail_uno']
     correo1 = reg['mail_uno']

Pero ahora me surge otro problema.
Tengo un if que si cumple una comparación entre una línea de un archivo (nombre.value) con un texto se hace el SELECT y asigna la dirección de mail a correo1. El problema es que el valor de nombre.value no existe en la bd sigue saliendo la última dirección de mail en correo1

¿Cómo podría solucionar esto?

Gracias y un saludo.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Python mysql
« Reply #2 on: Febrero 20, 2010, 12:16:37 pm »
Vacía la variable antes de hacer el select y rellénala sólo si el select da resultado.

Se bueno.

Guadafanex

  • Newbie
  • *
  • Posts: 12
  • Karma: 0
    • View Profile
Re: Python mysql
« Reply #3 on: Febrero 20, 2010, 08:13:30 pm »
Vacía la variable antes de hacer el select y rellénala sólo si el select da resultado.

Se bueno.

Gracias chuidiang. Hecho y funcionado!!!

Por cierto, ¿se debe desconectar de mysql al final? En la wiki no sale, no se si es necesario.

Gracias por toda la info en programación que nos ofreces y un saludo.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Python mysql
« Reply #4 on: Febrero 20, 2010, 08:20:00 pm »
Es como casi todos los close() en todos los lenguajes. Por elegancia y seguridad, cuando no se va a usar más una conexión, debe cerrarse. De todas formas, cuando el programa termina, el sistema operativo se encarga de cerrarlas, por eso a veces suele dejarse sin cerrar.

Lo que no puedes hacer es en la misma ejecución ir abriendo conexiones y dejándola abiertas, puesto que hay un límite máximo de conexiones abiertas simultáneamente.

Se bueno.

Guadafanex

  • Newbie
  • *
  • Posts: 12
  • Karma: 0
    • View Profile
Re: Python mysql
« Reply #5 on: Febrero 21, 2010, 01:05:55 am »
Gracias de nuevo, chuidiang.

En mi caso sería registro.close()

Muchisimas gracias por todo y un saludo.

 

ey