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)

خروجی: