Python - Consulta a BD

   
Vista:

Consulta a BD

Publicado por Pablo (4 intervenciones) el 14/11/2013 18:39:55
Hola gente , tengo el siguiente lio .

Tengo un programa que hace una conexion por medio de sockets a un cliente, este cliente manda informacion a la cual yo le llamo tipo, despues de eso con ese tipo lo agrego a una consulta la cual es un store procedure , pero cuando se ejecuta no me manda ningún resultado.Mientras que en la BD si tiene resultado, ejecuto ese mismo store procedure en mysql y se lanza respuesta. Espero me puedan ayudar , les pongo el codigo.Saludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
try:
		#pdb.set_trace()
		tipo = con.recv(1024)
		print "Se va a buscar los subtipos de " , tipo
		consulta = "Call catSubCosmeticos('"+tipo+"')"
		print "Se va a ejecutar ",consulta
 
		db = mdb.connect("localhost" ,"root", "0000",  "Andrea")#Realizamos la conexion con la base de datos
		cur = db.cursor() #Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos
		cur.execute(consulta) #Lanzamos la busqueda
		resultado = cur.fetchall() #Recuperamos los resultados
		for registro in resultado:
			print "Se envia el tipo " , registro[0]
			con.send(registro[0]+"\0")
			fin = con.recv(1024)
			print "Se recibio", fin
		print "Se enviaron todos los subtipos"
		con.send ("\0")
	except:
		print "Error al conectarse con la base de datos."
	finally:
		cur.close()
		db.close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta a BD

Publicado por xve (1229 intervenciones) el 14/11/2013 21:35:54
Hola Pablo, viendo tu ejemplo, entiendo que la variable mdb es el objeto MySQLdb, verdad?

Una cosa que yo probaria, es cambiar esta linea:
1
consulta = "Call catSubCosmeticos('"+tipo+"')"
por esta:
1
consulta = """Call catSubCosmeticos('%s')""" % tipo

Entiendo que el valor de la variable tipo es correcto, verdad?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a BD

Publicado por Pablo (4 intervenciones) el 15/11/2013 10:06:15
Hola, gracias por comentar, pero tristemente no funciono .trabajo en esta parte , si llego a funcionar te aviso, por cierto creo que seria más informacion si dijiera que la comunicacion es de sockets de c a python, es decir mi cliente es en c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Consulta a BD

Publicado por xve (1229 intervenciones) el 15/11/2013 12:39:47
Hola Pablo, en principio no tendria que tener mayor problema...

puedes hacer un print de tipo:
1
print tipo
para ver que los datos que llegan son correctos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a BD

Publicado por Pablo (4 intervenciones) el 16/11/2013 04:30:26
Si llegan correctos, es más el quering se forma adecuadamente. Pero cuando se ejecuta no regresa nada, si por ejemplo

consulta = "Call catSubCosmeticos('"+tipo+"')"
la hago

consulta = "Call catSubCosmeticos('"Cara"')"
Si funciona o en su caso a tipo = 'Cara' funciona pero cuando tomo el dato obtenido del socket no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a BD

Publicado por Pablo (4 intervenciones) el 18/11/2013 17:28:42
Hola, ya lo solucione , tanto en MPI como con sockets, el problema era que la informacion llegaba con un \0 , ejemplo Cara\0, pero al imprimir la cadena no se ve.Gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar