Python - Uso de mysql con python 3.4

 
Vista:
sin imagen de perfil
Val: 16
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por Javier (11 intervenciones) el 27/11/2017 19:29:56
Hola a todos :

Me pudieran echar una mano con esto,
No se como debo estructurar el select ya he tratado de muchas formas y me manda error en
cur.execute(query)

pienso que el error esta en la estrutura del SELECT porque si dejo query = '"SELECT * FROM usuarios"
funciona pero solo quiero el registro que contenga el valor de a.

gracias por su ayuda.

JAG


1
2
3
4
5
6
7
8
9
10
11
12
def aceptar(self):
        a = self.usuario.get()
        cur = conn.cursor()
        query = '"SELECT * FROM usuarios where usuario = %s" % (a)'
 
        cur.execute(query)
#        resultado = cur.fetchall()
 
        for (id, usuario, password) in cur:
           print("{},{}".format(usuario, password))
        cur.close()
        conn.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 kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por kip (257 intervenciones) el 28/11/2017 03:32:03
Hola, el error esta en que estas colocando como string el envio de parametros, fijate en esto:

1
2
query = 'SELECT * FROM usuarios where usuario = %s' % a
cur.execute(query)

De esa forma ya estarias haciendo el formateo del string, pero aquello no es para nada seguro, podrias hacerlo mejor asi:

1
2
query = 'SELECT * FROM usuarios where usuario = %s'
cur.execute(query, (a))

Siempre visita la doc -> https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html

Pruebalo y nos cuentas !
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
sin imagen de perfil
Val: 16
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por Javier (11 intervenciones) el 28/11/2017 19:00:41
Gracias por contestar Kip, le agregue lo que me comentaste y me sale este error en la consola dice que tengo un error se sintaxis.

Este es el codigo que yo tenia :

1
2
3
4
5
6
7
8
9
10
def aceptar(self):
    a = self.usuario.get()
    cur = conn.cursor()
    query = 'SELECT * FROM usuarios '
    cur.execute(query)
#    cur.fetchall()
 
    for ( id, usuario , password) in cur:
       print("{},{}".format(usuario, password))
    cur.close()

funciona bien de modo que me imprime los dos registros que tengo en la tabla


le agregue lo comentado por ti


1
2
3
4
5
6
7
8
9
10
def aceptar(self):
    a = self.usuario.get()
    cur = conn.cursor()
    query = 'SELECT * FROM usuarios where usuario = %s'
    cur.execute(query, (a))
#    cur.fetchall()
 
    for ( id, usuario , password) in cur:
       print("{},{}".format(usuario, password))
    cur.close()

y me sale este error :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
runfile('C:/SistemasPython/prueba.py', wdir='C:/SistemasPython')
UMD has deleted: conectabasedatosoftalmo
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Anaconda3\lib\tkinter\__init__.py", line 1487, in __call__
    return self.func(*args)
  File "C:/SistemasPython/prueba.py", line 113, in aceptar
    cur.execute(query, (a))
  File "C:\Anaconda3\lib\site-packages\mysql\connector\cursor.py", line 561, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "C:\Anaconda3\lib\site-packages\mysql\connector\connection.py", line 514, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "C:\Anaconda3\lib\site-packages\mysql\connector\connection.py", line 416, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1


Si pudieras comentarme algo de esto te lo agrqadeceria.

Saludos
JAG
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
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por xve (1646 intervenciones) el 28/11/2017 19:18:48
Javier, prueba a modificar esta linea:
1
cur.execute(query, (a))

por esta (fijate en la coma):
1
cur.execute(query, (a,))

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por kip (257 intervenciones) el 28/11/2017 19:27:41
Tal como comenta Xve, falta la coma (olvide agregarla), esto es porque al ser un único valor no se interpretara como una tupla, al agregarle la coma instantáneamente este parámetro se convierte en una tupla.. que es el tipo de parámetro que necesita el metodo
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
sin imagen de perfil
Val: 16
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

Uso de mysql con python 3.4

Publicado por Javier (11 intervenciones) el 28/11/2017 19:37:09
Gracias por sus respuestas y su tiempo, efectivamente es eso
Voy a reforzar lo de las variables y sus tipos

Saludos
JAG
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