Python MySQL Where

Используйте фильтр для выбора

При выборе записей из таблицы можно использовать оператор "WHERE" для фильтрации выбора:

Пример

Выберите записи, соответствующие "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)

Запуск примера

Символ подстановки

Вы также можете выбрать записи, начинающиеся с заданного символа или фразы, содержащие или заканчивающиеся на него.

Пожалуйста, используйте Представляет собой символ подстановки:

Пример

Выберите записи, адреса которых содержат слово "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)

Запуск примера

Предотвращение SQL-инъекций

Когда пользователи предоставляют значения запроса, вы должны escaping эти значения.

Это делается для предотвращения SQL-инъекций, это распространенная техника хакеров, которая может разрушить или злоупотребить вашей базой данных.

Модуль mysql.connector имеет методы для escaping значений запроса:

Пример

Использование метода占位ника %s для escaping значений запроса:

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)

Запуск примера