Python MySQL Где
Выбрать с фильтром
При выборе записей из таблицы вы можете отфильтровать выборку с помощью оператора WHERE:
Пример
Выберите запись(и), где адрес "Park Lane 38": результат:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="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)
Подстановочные знаки
Вы также можете выбрать записи, которые начинаются, включают или заканчиваются данной буквой или фразой.
Используйте %
для представления подстановочных знаков:
Пример
Выберите записи, где в адресе есть слово «путь»:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="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-инъекцию
Когда значения запроса предоставляются пользователем, вы должны экранировать значения.
Это делается для предотвращения SQL-инъекций, которые являются распространенным методом веб-хакерства для уничтожения или неправильного использования вашей базы данных.
В модуле mysql.connector есть методы для экранирования значений запроса:
Пример
Экранируйте значения запроса с помощью %s
метода заполнителя:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="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)