اجرای دستورات خام Sql در SQLAlchemy

در پست قبلی درباره کتابخونه فوق العاده SQLAlchemy نوشتم و مثال هایی از نحوه استفاده از اون به صورت ORM، ولی موقعیت هایی پیش میاد که یا پروژه مورد ساده ایه یا میخواید بدون اینکه وقت بزارید و یک کوئری رو به معادلش در SQLAlchemy تبدیل کنید سریع اون رو اجرا کنید

برای اینکار باز هم SQLAlchemy کمکتون میکنه

نکته ۱: وقتی تابع execute رو اجرا می‌کنید خود کوئری اجرا نمیشه بلکه زمانی اجرا میشه که یکی از توایع fetchone, fetchall یا first رو اجرا کنید و یا متغیر result رو تو حلقه قرار بدید

نکته ۲ : اگه تو کوئری از prepared statement استفاده میکنید باید کوئری رو تو تابع text قرار بدید.

 

و توضیح این توابع

 

fetchone

اولین رکورد نتایح رو برمیگردونه و در فراخوانی بعدی رکورد بعدی

 

fetchall

تمام نتایج رو یکجا برمیگردونه

 

first

اولین نتیجه رو بر میگردونه و حافظه ای که نتایج تو اون بوده رو ازاد میکنه و دیگه نمیتونید نتایج رو ببینید

 

fetchmany

نتایج رو به صورت قسمت، قسمت میگیره

 

چندین راه برای اجرای دستورات خام هست من این راه رو همیشه استفاده میکنم یعنی از Session استفاده میکنم و تمام دستورات رو کاملن مستقل اجرا میکنم بدون اینکه هیچ کلاسی تعریف کنم

یه نکته مهم اینکه تو حذف کردن یا ایجاد رکورد ممکن هست که warning بده

 

در تمام دستورات بالا با استفاده از sessionmaker یک session ایجاد کردیم اگه میخواید از session استفاد نکنید میتونید از متد connect استفاده کنید

 

برای مثالهای بیشتر هم اینجا و اینجا رو ببینید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *