آموزش پایتون: ساخت وب اپلیکیشن برای گردآوری داده با PostgreSQL و Flask
کار کردن با پایگاه داده و کوئریها در برخی موارد ممکن است برای برخی از افراد و یا شاید اغلب افراد کاملاً ملالآور باشد. ما قطعاً واقف هستیم که حتی گنجاندن عبارت PostgreSQL در عنوان این مطلب نیز باعث انصراف تعداد زیادی از خوانندههای مجله فرادرس از مطالعه آن خواهد شد، اما شما که این مطلب را برای مطالعه انتخاب کردهاید، باید بدانید که پایگاه داده موضوع مهمی برای یادگیری محسوب میشود. مطالعه آنچه در ادامه آمده با موضوع ساخت وب اپلیکیشن برای گردآوری داده با PostgreSQL و Flask هیچ دشواری برای شما نخواهد داشت. پیشنهاد میکنیم قبل از مطالعه این راهنما، نقلقول زیر را دو بار بخوانید:
آن چه افراد خودساخته را از مردمی که زندگی الهامبخشی ندارند، جدا میسازد، این است که آنها کارهایی انجام میدهند که افراد کمتر رشد یافته دوست ندارند انجام دهند؛ هر چند آنها نیز احتمالاً این کارها را دوست نداشتهاند.
-رابین شارما - کتاب «راهبی که فِراریاش را فروخت»
شاید اغلب ما از کار با پایگاه داده خوشمان نیاید؛ اما همچنان که شارما در کتاب خود گفته است این همان چیزی است که ما را از انبوه مردم جدا میکند. در این مقاله قصد داریم یک وبسایت (با استفاده از Flask) بسازیم که دادههایی که کاربر در آن وارد میکند را در یک پایگاه داده (PostgreSQL) ذخیره کند. ضمناً آن را به صورت live طراحی میکنیم تا بتواند به صورت آنی عمل کند.
نکته مهم: ما در بخش چهارم این سری مقالات آموزش پایتون (+) یک وب اپلیکیشن با استفاده از Flask ساختیم و آن را با استفاده از اپلیکیشن سرویس کلود Heroku به صورت آنلاین درآوردیم. اگر آن مطلب را مطالعه نکردهاید پیشنهاد میکنیم پیش از ادامه مطالعه این مقاله سری به آن بزنید تا با روش راهاندازی فرانتاند، محیط مجازی و همچنین شیوه آنلاین ساختن اپلیکیشن آشنا شوید. ضمناً برای مطالعه قسمت قبلی این مجموعه مطلب آموزشی نیز میتوانید روی لینک زیر کلیک کنید:
اگر آماده هستید اینک زمان آن رسیده است که کار خود را شروع کنیم.
گام اول: راهاندازی فرانتاند
همان طور که قبلاً اشاره کردیم، در این مقاله به طور عمده بر روی بکاند متمرکز خواهیم شد. اما این بدان معنی نیست که چیزهای دیگر را رها خواهیم کرد. ما هر چیزی را که لازم است ولو در حد یک یادآوری سریع، مورد اشاره قرار میدهیم تا افرادی که به صورت مبتدی این مقاله را شروع به مطالعه کردهاند بتوانند از آن بهرهمند شوند.
Flask یک میکروفریمورک برای توسعه وب است و در اغلب موارد در زمان کار با پایگاه داده نیز استفاده میشود. ما یک صفحه وب ایجاد میکنیم که با استفاده از آن میتوانیم ورودی کاربر را بگیریم. ایجاد یک وبسایت با استفاده از Flask کار آسانی محسوب میشود. به کد زیر نگاه کنید:
اگر بخش چهارم این سری مقالات آموزشی را مطالعه کرده باشید؛ ایدهای از شیوه کار این موارد خواهید داشت. تنها نکته جدید در کد فوق ['methods = ['POST است که برای ارسال دادهها به سرور استفاده میشود. ضمناً باید مطمئن شویم که محیط مجازی نیز برای این اپلیکیشن راهاندازی شده است. برای کسب اطلاعات بیشتر به بخش چهارم این مطلب (+) مراجعه کنید.
ما یک قالب را دانلود کردیم و آن را طوری تغییر دادیم که دادههای قد، وزن، جنسیت و همچنین اندازه کفش کاربر را میپرسد. شاید از خود بپرسید اندازه قد و وزن ممکن است به کار بیاید، اما اندازه کفش کاربر به چه دردی میخورد؟ پاسخ این سؤال را در انتهای مقاله خواهید دانست. بنابراین فرانتاند به صورت زیر خواهد بود. البته شیوه طراحی آن بسته به میل شما میتواند تغییر پیدا کند:
گام دوم: راهاندازی بکاند
در این بخش مراحلی که برای راهاندازی بکاند پروژهمان نیاز داریم توضیح دادهایم.
2.1 ایجاد یک پایگاه داده PostgreSQL
ما قصد داریم برای ایجاد یک مخزن داده از یک سیستم مدیریت پایگاه استفاده کنیم. از این رو از PostgreSQL به این منظور استفاده میکنیم. اگر روی سیستم ویندوز یا Mac کار میکنید، فایلهای نصبی برای این پایگاه داده در وبسایت رسمی (+) آن وجود دارد. در صورتی که از سیستم لینوکس استفاده میکنید، میتوانید با مراجعه به Ubuntu Software نسخه 16.04 یا جدیدتر به دنبال اپلیکیشن pgAdmin III بگردید. با این وجود اگر از اوبونتو 15.10 یا قدیمیتر استفاده میکنید (که البته بسیار بعید است!) میتوانید با راهنمایی که در این صفحه (+) ارائه شده آن را به صورت دستی نصب کنید. ما قبلاً محیط مجازی خود را ایجاد کردهایم و از این رو میتوانید مراحل کار را در آن محیط اجرا کنید.
ایجاد کاربر
زمانی که pgAdmin 3 را نصب کردید باید یک کاربر ایجاد کرده و رمز عبوری برای آن تعیین کنید. در تصویر زیر عبارت postgres اول نام کاربری و postgres دوم نام پایگاه داده است.
اتصال به سرور localhost
pgAdmin3 را از file روی گوشه سمت چپ-بالا باز کنید و سپس گزینه add server را بزنید. در این زمان صفحهای به صورت زیر میبینید که باید نام کاربری و رمز عبور خود را در آن وارد کنید:
همان طور که میبینید پایگاه داده postgres را که در زمان ایجاد کاربر ساختهایم در این جا حضور دارد. روی گزینه databases راست کلیک کرده و یک پایگاه داده جدید برای ذخیرهسازی دادهها ایجاد کنید. ما یک پایگاه داده به نام Data Collector ایجاد کردیم، چون این نام جالبی به نظر میرسید. اینک ما مجموعه داده خود را داریم و باید ستونها (جداول) را که دادههایی در آن ذخیره خواهند شد ایجاد کنیم.
2.2 اتصال پایگاه داده و ایجاد جدول
SQLAlchemy به ما کمک میکند که به پایگاه داده خود وصل شویم و psycopg نیز یک پوشش PostgreSQL برای پایتون محسوب میشود. البته لزومی به آشنایی با جزییات آن نداریم و کافی است این دو کتابخانه را نصب کرده و به کدنویسی بپردازیم.
اتصال به پایگاه داده
در ادامه باید اپلیکیشن خود را با وارد کردن نام کاربری، رمز عبور و نام پایگاه داده پیکربندی کنیم. پس از //:postgresql ابتدا نام کاربری و سپس یک دونقطه (:) و سپس رمز عبور را وارد میکنیم. درنهایت نوبت به نام پایگاه داده میرسد. زمانی که این کارها را انجام دادید باید یک وهله از SQLAlchemy بسازید.
سپس نوبت به کلاس میرسد. برنامهنویسی شیءگرا در این مرحله به کمک ما میآید. اگر با مفاهیم شیءگرایی آشنا نیستید، پیشنهاد میکنیم مقاله زیر را مطالعه کنید:
ما به کمک وهلهای که ساختهایم یک مدل ایجاد میکنیم. در این مدل نام جدول و نام همه ستونهایی را که کاربر در آنها مقداری وارد میکند را میآوریم. ما قصد نداریم همه کدها را بنویسیم چون هنوز ناقص است و از این رو مدل را به صورت دستی اجرا میکنیم. به این منظور به دایرکتوری app بروید و کنسول پایتون را با وارد کردن دستور python باز کنید و دستورهای زیر را وارد کنید:
from app import db db.create_all()
همان طور که میبینید جدول و همه ستونهای ما آماده ذخیرهسازی دادهها هستند. تنها کاری که اکنون باید انجام دهیم این است که 3 خط کد واقعی برای اجرایی شدن همه چیز بنویسیم.
2.3 ذخیرهسازی دادهها در پایگاه داده
ما متد را بررسی میکنیم و در صورتی که POST باشد دادههای وارد شده از سوی کاربر در متغیرها را ذخیره میکنیم. اینک باید یک «نشست» (Session) ایجاد، دادهها را به پایگاه داده اضافه و درنهایت کامیت کنیم. بدین ترتیب کار در این مرحله پایان مییابد.
گام سوم: توزیع وب اپلیکیشن روی سرور آنلاین
شما قبلاً با روش ایجاد 3 فایل مورد نیاز و توزیع وب اپلیکیشن روی سرورهای Heroku آشنا شدهاید. برای این که این وب اپلیکیشن آنلاین شود ابتدا باید آن فرایند را تکرار کنیم. زمانی که وب اپلیکیشن آنلاین شد، باید یک پایگاه داده روی سرور Heroku بسازیم که اسکریپت اصلی ما را به جایی در localhost متصل میکند. به این منظور باید وارد CLI مربوط به Heroku شویم و یک پایگاه داده را با وارد کردن دستور زیر ایجاد کنیم. در این دستور dataforml نام اپلیکیشن ما است.
heroku addons:create heroku-postgresql:hobby-dev --app dataforml
نکته: ابتدا باید اپلیکیشن آنلاین شود تا بتوانید اقدامات فوق را اجرا کنید.
دستور زیر را وارد کنید تا URI پایگاه داده را مشاهده کنید و در اسکریپت اصلی نمایش یابد (خط 9 کد زیر را ببینید):
heroku config --app dataforml
اکنون گام نهایی همانند زمانی که جدول را روی localhost ایجاد کردیم، ساختن آن روی Heroku است. بنابراین پوسته پایتون را روی Heroku با دستور زیر باز کنید:
heroku run python from (name of your main file) import db db.create_all() exit()
کد نهایی
بدین ترتیب کار به پایان رسیده و اپلیکیشن گردآوری دادهها راهاندازی شده است. کد این اپلیکیشن پس از پیکربندی پایگاه داده Heroku به صورت زیر درمیآید:
بررسی صحت دادهها
اینک از کجا بدانیم که دادهها به صورت صحیحی ذخیره شدهاند؟ برای بررسی دادهها میتوانید پایگاه داده روی Heroku.com را باز کنید و یا دستور زیر را در خط فرمان وارد کنید:
heroku pg:psql --app dataforml
خروجی آن به صورت زیر است:
برای نوشتن یک کوئری از خط فرمان عبارت زیر را وارد کنید:
select * from data
در خروجی همه دادههای ثبتشده خود را مشاهده خواهید کرد.
سخن پایانی
از آنجا که پردازشهای کوچک زیادی در بکاند وجود دارند، پوشش دادن همه آنها در یک مطلب کار دشواری است. اما ما در این نوشته تلاش کردهایم همه مواردی که ضروری بودند را توضیح دهیم. در مورد دادهها نیز باید بگوییم که ما یک ابزار طبقهبندی جنسیت را آموزش میدهیم که به طبقهبندی جنسیت کاربر بر مبنای قد، وزن و اندازه کفش میپردازد. وب اپلیکیشن ما در حال حاضر در آدرس DataForML.herokuapp.com آنلاین است و در حدود یک دقیقه طول میکشد تا پاسخ دهد. شما نیز میتوانید دادههای خود را در آن وارد کنید.
قسمت بعدی این مجموعه مطلب را میتوانید از طریق کلیک روی لینک زیر مطالعه کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- مجموعه آموزشهای برنامهنویسی
- گنجینه آموزش های برنامه نویسی پایتون (Python)
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- ساخت وب اپلیکشن با فلسک (Flask) و Google App Engine – به زبان ساده
- آموزش پایتون: ساخت و انتشار وب سایت با Flask — به زبان ساده
==