مرکز آموزش میهن وب هاست

مرکز آموزش میهن وب هاست

اتصال Flask به دیتابیس

پرینت این مقاله پرینت این مقاله

برای اتصال فلسک به دیتابیس لازم است تا در ابتدا یک دیتابیس MySQL در هاست ایجاد کنید. برای این مورد می توانید از آموزش زیر بهره ببرید:
در آغاز فرض می شود که flask ،flask-sqlalchemy و pymysql  از قبل در پروژه نصب شده اند و در فایل requirements.txt برای نصب موجود می باشند. اگر پروژه شما دارای فایل requirements.txt نیست؛ لازم است وارد ترمینال محیط مجازی مربوط به این پروژه در Cpanel شوید.
وارد منوی"Setup Python App" شده و در بخش "Web applications" روبروی نام پروژه تان گزینه مداد یا همان ویرایش را انتخاب نمایید.
تصویر(1)
سپس طبق تصویر زیر بخش مشخص شده را کپی نمایید. لازم به ذکر است که با یک کلیک روی این عبارت، کپی خودکار انجام می گردد.
تصویر(2)
هم اکنون می بایست کتابخانه های مورد نیاز پروژه تان را با استفاده از Terminal نصب نمایید. از همین رو در سی پنل وارد بخش "Terminal" از منوی "Advanced" شوید.
تصویر(3)
پس از ورود به محیط Terminal ابتدا کد کپی شده در قسمت قبل را وارد نمایید و ENTER بزنید تا وارد مسیر پروژه تان شوید.
تصویر(4)
برای نصب هر کدام از موارد گفته شده در محیط ترمینال، باید کد مربوطه را به صورت زیر وارد کنید:
pip install flask
pip install flask-sqlalchemy
pip install pymysql
با توجه به اینکه در آموزش فعلی از sqlalchemy استفاده می شود، با قطعه کد زیر می توانید کانفیگ دیتابیس را در فایل پروژه انجام دهید.
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql:// DATABASE_USER: DATABASE_PASSWORD@localhost/DATABASE_NAME'
db = SQLAlchemy(app)
در خط اول باید سه پارامتر را با دقت و به صورت صحیح وارد کنید.
پارامتر DATABASE_USER همان نام کاربری دیتابیس و DATABASE_PASSWORD  نیز دیتابیس ایجاد شده در هاست می باشد. به جای DATABASE_NAME نیز باید نام دیتابیس ساخته شده را قرار دهید.
نکته 1: توجه کنید که این مقادیر نباید در (دابل کوتیشن) یا (کوتیشن) قرار داده شوند.
اگر پروژه شما آماده است و در حال انتقال از لوکال به هاست هستید و یک یا تعدادی Model برای آن تعریف کرده اید، با توجه به اینکه معماری فلسک به صورت MVC (Model-View-Controller) می باشد، باید اقدامات دیگری را نیز انجام دهید.
برای درک بهتر ایجاد و ارتباط صحیح بین کد و دیتابیس، در این آموزش یک قطعه کد ساده که در آن Model ساده به نام User ایجاد شده و مربوط به نام و سن یک یوزر می باشد به همراه کانفیگ دیتابیس بیان شده است.
در ادامه فرآیند، باید flask-migrate را نیز در محیط مجازی پروژه نصب کنید.
pip install flask-migrate
پس از آن وارد مسیر پروژه شده و یک پوشه به نام "migrations" ایجاد کنید. (تصویر5)
تصویر(5)
فایل اصلی این آموزش که تمام کدهای پروژه فلاسک در آن نوشته شده، app.py نام دارد و محتوای آن به صورت تصویر زیر می باشد.
 
تصویر(6)
با دقت به کد موجود در تصویر6 نکات زیر قابل ذکر است:
1- خط 1 تا 3 مربوط به import کردن پکیج های نصب شده است که در پروژه شما نیز باید درج شوند.
2- خط 5 مربوط به ساختار پروژه فلسک است که در هر پروژه ای وجود دارد.
3- خط 7 تغییر متغیر مربوط به اجرای فلسک در Cpanel می باشد که در آموزش آپلود پروژه Flask در هاست پایتون به آن اشاره شده است.
4- خط 9 و 11 همان دو خط کد کانفیگ دیتابیس می باشند که در ابتدای آموزش به آن ها اشاره شد.
5- خط 13 نیز برای انجام فرآیند migrate ضروری است.
6- در خط 15 کلاس User از همان Model ساده مورد اشاره در آموزش، آورده شده است.
7- از خط 23 تا انتها نیز به ساختار پروژه ارتباط داشته و در پروژه این آموزش به صورتی که در تصویر مشاهده می کنید، نوشته شده است.
با توجه به موارد فوق آنچه که شما پس از import کردن پکیج ها برای کانفیگ دیتابیس متناسب با کدهای پروژه خودتان به آن نیاز دارید؛ خط های 7 ، 9، 11 و 13 می باشند که مجدد در ادامه نیز آورده شده اند:
application = app
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://DATABASE_USER:DATABASE_PASSWORD@localhost/DATABASE_NAME'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
پس از ذخیره کردن تغییرات در فایل پروژه، مجددا وارد ترمینال محیط مجازی پروژه جاری شده و دستورات زیر را به ترتیب وارد نمائید.
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
 
این دستورات پس از ایجاد پوشه migrate، فایل های migrate را ایجاد و سپس آن ها را اجرا می کنند. پس از دریافت پیام موفقیت آمیز بودن دستورات، می توانید در Cpanel به phpMyAdmin رفته و در ستون کناری روی نام دیتابیس خودتان کلیک نمائید تا از صحت انجام کار اطمینان حاصل شود.
پس از باز شدن جداول دیتابیس، شما باید نام جداول موجود را بر اساس نام Model های نوشته شده در کد مشاهده نمائید. با کلیک روی Indexes در زیرشاخه مربوط به همان جدول، فیلدهای تعریف شده برای آن Model نیز قابل بررسی خواهند بود.
همانطور که در تصویر7 مشخص است؛ آنچه که در کد نمونه تعریف شده بود کاملا پیاده سازی شده است.
 
تصویر(7)
5/5 از 3 رای