شرط Where
اینجا «شرط WHERE» را یاد می گیریم. «WHERE» یعنی فیلتر کردن رکوردها. مثل حضور و غیاب که فقط غایب ها را می خواهی. ابتدا وصل می شویم، سپس با WHERE نتیجه را محدود می کنیم.
انتخاب با فیلتر ساده
برای فیلتر، بعد از SELECT ... FROM شرط WHERE را بنویس. سپس نتیجه را با fetchall() بخوان.
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)
جستجوی الگو با LIKE و %
برای «شبیه» یابی از LIKE استفاده کن. علامت % یعنی هر رشته ای. این مثل جستجوی بخشی از نام در دفتر کلاس است.
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 Injection با پارامتر
«SQL Injection» حمله ای است که کوئری را خراب می کند. همیشه مقدارها را پارامتری بده. این کار امن تر است و خطاها را کم می کند.
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)
گام های عملی
- به دیتابیس وصل شو و Cursor بگیر.
- کوئری SELECT با WHERE بنویس.
- با پارامترها مقدار را امن بده.
- نتیجه را با fetchall چاپ کن.
نکته: همیشه از جای نگهدار %s استفاده کن. هرگز مقدار را داخل رشته کوئری نچسبان.
لینک های داخلی
برای شروع خواندن، بخش انتخاب (Select) را ببین. برای مرتب سازی نتیجه، به مرتب سازی (ORDER BY) برو. اگر داده ای نداری، اول از درج رکورد (Insert) استفاده کن.
جمع بندی سریع
- WHERE رکوردها را فیلتر می کند.
- LIKE با % برای الگوهاست.
- پارامتری بنویس تا امن بمانی.
- نتیجه را با fetchall یا fetchone بگیر.