PYTHON MySQL WHERE

Al seleccionar registros de una tabla, puede filtrar la selección utilizando la declaración «WHERE»:

Ejemplo

Seleccione los registros en los que la dirección sea «C/ Mayor 1»: resultado:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu usuario",
  passwd="tu contraseña",
  database="tu bbdd"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM clientes WHERE direccion ='C/ Mayor 1'"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Caracteres comodín

También puede seleccionar los registros que comienzan, incluyen o terminan con una letra o frase determinada.

Usa el % para representar caracteres comodín:

Ejemplo

Seleccione los registros donde la dirección contiene los caracteres «C/»:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user= "tu usuario",
  passwd="tu contraseña",
  database="tu bbdd"
)

mycursor = mydb.cursor()

sql = ""SELECT * FROM clientes WHERE direccion LIKE '%C/%'""

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

Prevenir la inyección de SQL

Cuando el usuario proporciona los valores de consulta, debe escapar de los valores. Esto es para evitar inyecciones de SQL, que es una técnica común de piratería para destruir o hacer un mal uso de su base de datos. El módulo mysql.connector tiene métodos para escapar de los valores de consulta:

Ejemplo

Escape los valores de consulta utilizando el método placholder % s:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu usuario",
  passwd="tu contraseña",
  database="tu bbdd"
)

mycursor = mydb.cursor()

sql = "SELECT * FROM clientes WHERE direccion = %s"
adr = ("C/ Samaranch 42", )

mycursor.execute(sql, adr)

myresult = mycursor.fetchall()

for x in myresult:
  print(x)