در مطلب پیشین در مورد چگونگی محدود کردن سطرهای خروجی در SqlAlchemy تا اندازه ای صحبت کردیم و گفتیم این کار بوسیله متد ()limit انجام می شود. توجه کنید، با اینکه SQL، زبانی استاندارد است، ولی تفاوت هایی نیز وجود دارد. یکی از این تفاوت ها، در محدود سازی سطرهای خروجی در پایگاه داده های متفاوت است.

۱در پایگاه داده MySQL و PostgreSQL دستور LIMIT وجود دارد کدهای زیر ابتدا ۵ سطر نخست را از سطرهای خروجی نمایش می دهند. کد دوم از سطر دهم به به بعد، ۱۵ سطر را نشان می دهد. به عبارت دیگر از سطر ۱۰ تا ۲۵ را نشان می دهد.

به عبارت دیگر در دومین دستور بالا، عدد نخست شماره offset یا سطری که از آن محدودیت شروع می شود و عدد دوم تعداد سطرها تا انتهای محدودیت را نشان می دهد. در دستورهای زیر به ترتیب سطر نخست، سطر پایانی بر اساس ترتیب شماره کارمندی را نشان می دهند.

۲در پایگاه داده SQL Server دستور TOP وجود دارد. کدهای زیر به ترتیب ۱۰۰ سطر نخست و کد دوم ۲۰ درصد از تمامی سطرها را نشان می دهند.

۳در پایگاه داده اوراکل محدود سازی سطرها در نسخه های ۱۱به قبل و ۱۲ به بعد تفاوت دارند که می توانید از لینک های زیر آنها را بخوانید.

محدود سازی سطرها در اوراکل ۱۱

محدود سازی سطرها در اوراکل ۱۲

بنابراین می توانیم نتیجه بگیریم که متد SqlAlchemy و در کل ORM ها کار با پایگاه داده ها را ساده می کنند به این صورت که بدون نیاز به تغییر کدهای پایتونی، و با بهره گیری از کلاس ها و متدهای درون ORM می توانیم به سادگی کدی برای تعامل با پایگاه داده بنوسیم که بر روی پایگاه داده های رایج مانند MySQL, PostgresSQL, SQL Server و اوراکل اجرا شوند.

به عبارت دیگر از دید کدهای نرم افزاری (در اینجا پایتون و شاید در جای دیگر سی شارپ یا جاوا) به سادگی می توانیم از یک پایگاه داده به پایگاه داده دیگری مهاجرت کنیم. به عبارت دیگر SqlAlchemy و هر ORM دیگری برای زبان های متفاوت، رشته کوئری را بر اساس پایگاه داده ای که به آن متصل شده است، ایجاد می کند.

کد زیر ساده ترین حالت را برای محدود سازی نشان می دهند. شما می توانید بوسیله متد ()str رشته کوئری درون متغیر s را به رشته تبدیل کنید و در خروجی نمایش دهید. حال شما خودتان برای تمرین کد دوم از زیر را اجرا کنید تا ببنید می توانید بوسیله خصوصیت c ستون های خروجی را نیز محدود کنید.

توضیح دادیم که دستور LIMIT در MySQL می تواند دو مقدار را دریافت کند که عدد نخست شماره offset یا شماره سطری که از آن می خواهیم تا عدد دوم سطرها را نمایش دهیم. به عبارت دیگر اگر بخواهیم از سطر ۱۰ ام تا سطر ۲۵ ام را نشان دهیم، پس عدد نخست ۱۰ و عدد دوم ۱۵ خواهد بود. پس نتیجه می گیریم که عدد دوم برابر با تعداد سطرها است.

در SqlAlchemy متدی به نام ()offset وجود دارد که همانند متد ()limit یک عدد صحیح را به عنوان ورودی دریافت می کند. در کد و شکل زیر نمونه ای از کاربرد آن را می بینید که ابتدا متد ()offset با عدد ۱۰ (سطر ۱۰ ام) و سپس متد ()limit با عدد ۱۵ (یعنی ۱۵ سطر به بعد) را دریافت می کند.