در مطلب عبارت شرطی WHERE در SqlAlchemy در مورد شرط ها در SqlAlchemy صحبت شده است و در ادامه آن و در این مطلب می خواهیم در مورد شبیه سازی عبارت BETWEEN در SqlAlchemy صحبت کنیم. عبارت BETWEEN در زبان SQL و درون شرط WHERE برای پیدا کردن رکوردهایی در میان یک بازه مشخص استفاده می شود. به طور مثال می خواهیم فهرست تمامی کارمندان با شناسه های میان بازه 32012 تا 32332 را پیدا کنیم.

در SqlAlchemy متد ()between عبارت BETWEEN در زبان SQL را شبیه سازی می کند. این متد دو مقدار را به عنوان شروع و پایان بازه دریافت می کند و سپس تمامی رکوردهایی از جدول که مطابت دارد را برگشت دهد. در کدهای زیر به طور نمونه می خواهیم نام و نام خانوادگی تمامی کارمندانی که دارای شناسه کارمندی میان بازه 32012 و 32332 هستند را بدست آوریم.

همچنین می توانیم متد ()between را به صورت زیر نیز درون کدها استفاده کنیم. شکل زیر تفاوت میان دو روش استفاده ولی ایجاد کوئری مشابه را نشان می دهد. تفاوتی نمی کند شما از کدام روش استفاده کنید.

عبارت DISTINCT در SqlAlchemy

در زبان SQL از عبارت DISTINCT (و یا UNIQUE) برای نمایش یک مرتبه از سطرها با مقدارهای تکراری در خروجی استفاده می شود. فرض کنید می خواهید بدانید کارمندان شما از کدام شهرها هستند. به عبارت دیگر تنها می خواهید فهرست شهرهایی را بدست بیاورید که کارمندان ساکن آن شهرها هستند، پس لزومی ندارد نام هر شهر تکراری در خروجی بیاید، بلکه همین که تنها یک مرتبه در خروجی باشد، به معنی این است که دست کم یک کارمند ساکن آن شهر است.

در SqlAlchemy و مطابق کدهای زیر باید از متد ()distinct استفاده کنیم.  این متد تنها نام یک ستون را دریافت می کند. همچنین دقت کنید که متد ()distinct باید درون لیست فرستاده شده به متد ()select فراخوانی شود. در کدهای زیر می خواهیم فهرست از نام هایی که کارمندان دارند را پیدا کنیم. به عبارت دیگر فهرستی غیر تکراری را می خواهیم پیدا کنیم.

عبارت LIKE در SqlAlchemy

در زبان SQL عبارت LIKE (و یا UNIQUE) شبیه به عبارت های باقاعده در زبان های برنامه نویسی است به این معنی که به دنبال پیدا کردن رکورد یا رکوردهایی هستیم که با یک الگو مطابقت دارند. در SqlAlchemy متد ()like برای شبیه سازی عبارت LIKE در SQL استفاده می شود. در کدهای زیر به دنبال پیدا کردن تمامی کارمندانی هستیم که نام آنها با دو کاراکتر Ma شروع شود. توجه کنید در خروجی کارمندانی با نام ma نشان داده نمی شوند زیرا عبارت LIKE حساس به متن است و میان حروف بزرگ و کوچک تفاوت می گذارد.

عملگر LIKE در عبارت WHERE

دانلود سورس برنامه های بخش نخست و دوم عبارت شرطی SqlAlchemy select and where