Python MySQL Where
انتخاب کردن بر اساس یک فیلتر
هنگامی که رکوردها را از یک جدول انتخاب میکنید، میتوانید با استفاده از دستور "WHERE"
آن رکوردها را فیلتر کنید.
import mysql.connector
from config import username, password, host
mydb = mysql.connector.connect(
host= host,
user= username,
password= password,
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)
کاراکترهای wildcard
همچنین میتوانید رکوردها را بر اساس اینکه شامل حرف یا عبارت خاصی باشند یا با حرف یا عبارت خاصی شروع شده و یا پایان یافته باشند فیلتر کنید.
برای استفاده از کاراکترهای wildcard از علامت %
استفاده کنید.
import mysql.connector
from config import username, password, host
mydb = mysql.connector.connect(
host= host,
user= username,
password= password,
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 است. SQL Injection یکی از رایجترین راههای هک وب جهت خراب کردن یا سوءاستفاده از پایگاه داده شما است.
مدول mysql.connector توابع شیءای برای فرار از مقادیر کوئری دارد. در کد زیر از %
برای فرار از مقادیر کوئری استفاده شده است.
import mysql.connector
from config import username, password, host
mydb = mysql.connector.connect(
host= host,
user= username,
password= password,
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)