Where en MySQL en Python

使用筛选器来选取

从表中选择记录时,可以使用 "WHERE" 语句对选择进行筛选:

Ejemplo

选择记录为 "Park Lane 38" 的记录,结果:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers" WHERE address ='Park Lane 38'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

Ejecutar ejemplo

通配符

您也可以选择以给定字母或短语开头、包含或结束的记录。

请使用 表示通配符:

Ejemplo

选择包含单词 "way" 的地址的记录:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address LIKE '"%way%"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

Ejecutar ejemplo

Prevenir la inyección SQL

Cuando los usuarios proporcionan valores de consulta, debe escapar estos valores.

Esto se hace para evitar la inyección SQL, una técnica común de piratería informática que puede dañar o abusar de su base de datos.

El módulo mysql.connector tiene métodos para escapar valores de consulta:

Ejemplo

Usar el método de sustitución de lugar %s para escapar valores de consulta:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address =" %s"
adr = ("Yellow Garden 2", )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

Ejecutar ejemplo