در مطلب های پیشین در مورد رشته اتصال و استفاده از متد ()create_engine صحبت کردیم و جالب است بدانید که متد ()create_engine باعث ایجاد اتصال به پایگاه داده و از این رو فرستادن دستورها و دریافت پاسخ ها نمی شود. در این مطلب به عنوان جمع بندی می خواهیم از دیکشنری برای ایجاد رشته اتصال استفاده کنیم و در نهایت توسط متد ()connect یک اتصال به پایگاه داده ای ایجاد می کنیم، که رشته اتصال به آن اشاره می کرد.

گام های لازم برای ایجاد اتصال به پایگاه داده

۱ – ایجاد رشته اتصال که شامل تعیین نوع پایگاه داده و دایور آن می شود. تعیین نام و گذرواژه ای که مجوز اجرای کوئری ها را دارد. تعیین نام یا آدرس هاستی که سرور MySQL یا هر پایگاه داده دیگری در آن اجرا می شود. در صورت نیاز تعیین شماره پورت برای پایگاه داده و در نهایت اگر از پیش پایگاه داده ای وجود داشت، می توانید آنرا نیز تعیین کنید.

۲ – فرستادن رشته اتصال به متد ()create_engine. توجه کنید متد ()create_engine هیچ اتصالی را به پایگاه داده ایجاد نمی کند.

۳ – ایجاد یک اتصال توسط متد ()connect. توجه کنید که متد ()connect از طریق متغیری قابل دسترسی است که پیش از این از نتیجه اجرای متد ()create_engine ایجاد شده بود.

در کدهای زیر دو رشته اتصال یکسان تعریف شده اند با این تفاوت که در دومی شماره پورت پیش فرض ۳۳۰۶ برای MySQL نیز مشخص شده است. توجه کنید که اگر سرور پایگاه داده شما روی شماره ای غیر از پورت پیش فرض مشخص شده باشد، پس حتما باید انرا تعیین کنیم ولی اگر از شماره پورت پیش فرض استفاده شود، پس لازم نیست که آنرا تعیین کنید.

در رشته های بالا از کاربر root برای اتصال استفاده شده است و همچنین در رشته اتصال تعیین شده است که می خواهیم به پایگاه داده ای به نام employees وصل شویم. حال نوبت به ایجاد یک اتصال است و این کار توسط دستور زیر صورت می گیرد. توجه کنید در دستور زیر از طریق متغیر engine به متد ()connect دسترسی پیدا کرده ایم. در واقع متغیر engine نتیجه اجرای متد ()create_engine را در خود نگه می دارد.

در کد بالا نام شی اتصال conn نام دارد که از آن و بوسیله متد ()execute برای اجرای کوئری ها استفاده می کنیم. به یاد داشته باشید که باید پس از اتمام کار با پایگاه داده اتصال را از طریق متد ()close قطع کنید.

روش دیگر برای ایجاد رشته اتصال و ارتباط به پایگاه داده

در ماژول sqlalchemy.engine.url کلاسی به نام URL وجود دارد که همانند کد و شکل زیر می توانید یک دیکشنری از پارامترهای رشته اتصال را به آن بفرستید تا این کلاس برای شما رشته اتصال را ایجاد کنید تا در نهایت آن را به متد ()create_engine بفرستیم.

در کدهای بالا در کنار ضمیمه کردن کلاس URL از ماژول sqlalchemy.engine.url، استثنا DatabaseError از ماژول sqlalchemy.exc نیز به فایل ضمیمه شده است تا در کدهای زیر از آن برای نمایش خطای اتصال استفاده کنیم. در کد و شکل زیر اگر پایگاه داده ای به نام employees که پیش از این در رشته اتصال تعیین کرده بودیم وجود نداشت، پس اجرای ()engine2.connect باعث بروز یک استثنا می شود و گرنه پیغام نمایش داده می شود.

پس برای اتصال به پایگاه داده ابتدا باید رشته اتصال به متد ()create_engine فرستاده شود و سپس توسط متغیر ایجاد شده از متد ()create_engine باید متد ()connect فراخوانی شده تا متغیر اتصال (در این مطلب conn) ایجاد شود. پس از این از طریق همین متغیر conn می توانیم بوسیله متد ()execute کوئری های ایجاد شده توسط متدهای SqlAlchemy را اجرا کنیم.

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

بنابراین درمطلب های پیش رو دیگر چگونگی اتصال به پایگاه داده را نخواهیم گفت و شما باید با یکی از دو روش بالا (شکل های ۱ و ۲ در بالا) ابتدا با پایگاه داده ارتباط برقرار کرده تا در نهایت بتوانیم کوئری را اجرا کنیم. توجه کنید برای اجرای کوئری ها از متغیری استفاده می کنیم که حاصل اجرای متد ()connect است. (توسط دستور ()conn=engine.connect)