خانه / fd / آموزش پایتون: وب اپلیکیشن برای گردآوری داده با استفاده از PostgreSQL و Flask

آموزش پایتون: وب اپلیکیشن برای گردآوری داده با استفاده از PostgreSQL و Flask

کار کردن با پایگاه داده و کوئری‌ها در برخی موارد ممکن است برای برخی از افراد و یا شاید اغلب افراد کاملاً ملال‌آور باشد. ما قطعاً واقف هستیم که حتی گنجاندن عبارت PostgreSQL در عنوان این مطلب نیز باعث انصراف تعداد زیادی از خواننده‌های مجله فرادرس از مطالعه این مطلب شده است؛ اما شما که این مطلب را برای مطالعه انتخاب کرده‌اید، باید بدانید که پایگاه داده موضوع مهمی برای یادگیری محسوب می‌شود. مطالعه این مطلب با موضوع ساخت وب اپلیکیشن برای گردآوری داده با استفاده از PostgreSQL و Flask هیچ دشواری برای شما نخواهد داشت. پیشنهاد می‌کنیم قبل از مطالعه این راهنما، نقل‌قول زیر را دو بار بخوانید:

آن چه افراد خودساخته را از مردمی که زندگی الهام‌بخشی ندارند، جدا می‌سازد، این است که آن‌ها کارهایی انجام می‌دهند که افراد کمتر رشد‌یافته دوست ندارند انجام دهند؛ هر چند آن‌ها نیز احتمالاً این کارها را دوست نداشته‌اند.

-رابین شارما – کتاب «راهبی که فِراری‌اش را فروخت»

شاید اغلب ما از کار با پایگاه داده خوشمان نیاید؛ اما همچنان که شارما در کتاب خود گفته است این همان چیزی است که ما را از انبوه مردم جدا می‌کند. در این مقاله قصد داریم یک وب‌سایت (با استفاده از Flask) بسازیم که داده‌هایی که کاربر در آن وارد می‌کند را در یک پایگاه داده (PostgreSQL) ذخیره کند. ضمناً آن را به صورت live طراحی می‌کنیم تا بتواند به صورت آنی عمل کند.

نکته مهم: ما در بخش چهارم این سری مقالات آموزش پایتون (+) یک وب اپلیکیشن با استفاده از Flask ساختیم و آن را با استفاده از اپلیکیشن سرویس کلود Heroku به صورت آنلاین درآوردیم. اگر آن مطلب را مطالعه نکرده‌اید پیشنهاد می‌کنیم پیش از ادامه مطالعه این مقاله سری به آن بزنید تا با روش راه‌اندازی فرانت‌اند، محیط مجازی و همچنین شیوه آنلاین ساختن اپلیکیشن آشنا شوید. ما جایی نمی‌رویم و همین جا منتظریم تا شما برگردید!

اگر آماده هستید اینک زمان آن رسیده است که کار خود را شروع کنیم.

گام یکم: راه‌اندازی فرانت‌اند

همان طور که قبلاً اشاره کردیم، در این مقاله به طور عمده بر روی بک‌اند متمرکز خواهیم شد. اما این بدان معنی نیست که چیزهای دیگر را رها خواهیم کرد. ما هر چیزی را که لازم است ولو در حد یک یادآوری سریع، مورد اشاره قرار می‌دهیم تا افرادی که به صورت مبتدی این مقاله را شروع به مطالعه کرده‌اند بتوانند از آن بهره‌مند شوند.

Flask یک میکروفریمورک برای توسعه وب است و در اغلب موارد در زمان کار با پایگاه داده نیز استفاده می‌شود. ما یک صفحه وب ایجاد می‌کنیم که با استفاده از آن می‌توانیم ورودی کاربر را بگیریم. ایجاد یک وب‌سایت با استفاده از Flask کار آسانی محسوب می‌شود. به کد زیر نگاه کنید:

#Import dependencies from flask import Flask, render_template  #Create instance of Flask App app = Flask(__name__)  #Define Route and Contant of that page @app.route("/") def index():     return render_template("index.html")  #Define 2nd Route and Content @app.route("/success", methods = ['POST']) def success():     return render_template("success.html")  #Running and Controlling the script if (__name__ =="__main__"): app.run(debug=True)

اگر بخش چهارم این سری مقالات آموزشی را مطالعه کرده باشید؛ ایده‌ای از شیوه کار این موارد خواهید داشت. تنها نکته جدید در کد فوق [‘methods = [‘POST است که برای ارسال داده‌ها به سرور استفاده می‌شود. ضمناً باید مطمئن شویم که محیط مجازی نیز برای این اپلیکیشن راه‌اندازی شده است. برای کسب اطلاعات بیشتر به بخش چهارم این مطلب (+) مراجعه کنید.

ما یک قالب را دانلود کردیم و آن را طوری تغییر دادیم که داده‌های قد، وزن، جنسیت و همچنین اندازه کفش کاربر را می‌پرسد. شاید از خود بپرسید اندازه قد و وزن ممکن است به کار بیاید، اما اندازه کفش کاربر به چه دردی می‌خورد؟ پاسخ این سؤال را در انتهای مقاله خواهید دانست. بنابراین فرانت‌اند به صورت زیر خواهد بود. البته شیوه طراحی آن بسته به میل شما می‌تواند تغییر پیدا کند:

 Flask

گام دوم: راه‌اندازی بک‌اند

در این بخش مراحلی که برای راه‌اندازی بک‌اند پروژه‌مان نیاز داریم توضیح داده‌ایم.

۲٫۱ ایجاد یک پایگاه داده PostgreSQL

ما قصد داریم برای ایجاد یک مخزن داده از یک سیستم مدیریت پایگاه استفاده کنیم. از این رو از PostgreSQL به این منظور استفاده می‌کنیم. اگر روی سیستم ویندوز یا Mac کارمی کنید، فایل‌های نصبی برای این پایگاه داده در وب‌سایت رسمی (+) آن وجود دارد. در صورتی که از سیستم لینوکس استفاده می‌کنید، می‌توانید با مراجعه به Ubuntu Software نسخه ۱۶٫۰۴ یا جدیدتر به دنبال اپلیکیشن pgAdmin III بگردید. با این وجود اگر از اوبونتو ۱۵٫۱۰ یا قدیمی‌تر استفاده می‌کنید (که البته بسیار بعید است!) می‌توانید با راهنمایی که در این صفحه (+) ارائه شده آن را به صورت دستی نصب کنید. ما قبلاً محیط مجازی خود را ایجاد کرده‌ایم و از این رو می‌توانید مراحل کار را در آن محیط اجرا کنید.

ایجاد کاربر

زمانی که pgAdmin 3 را نصب کردید باید یک کاربر ایجاد کرده و رمز عبوری برای آن تعیین کنید. در تصویر زیر عبارت postgres اول نام کاربری و postgres دوم نام پایگاه داده است.

اتصال به سرور localhost

pgAdmin3 را از file روی گوشه سمت چپ-بالا باز کنید و سپس گزینه add server را بزنید. در این زمان صفحه‌ای به صورت زیر می‌بینید که باید نام کاربری و رمز عبور خود را در آن وارد کنید:

PostgreSQL و Flask

PostgreSQL و Flask

همان طور که می‌بینید پایگاه داده postgres را که در زمان ایجاد کاربر ساخته‌ایم در این جا حضور دارد. روی گزینه databases راست کلیک کرده و یک پایگاه داده جدید برای ذخیره‌سازی داده‌ها ایجاد کنید. ما یک پایگاه داده به نام Data Collector ایجاد کردیم، چون این نام جالبی به نظر می‌رسید. اینک ما مجموعه داده خود را داریم و باید ستون‌ها (جداول) را که داده‌هایی در آن ذخیره خواهند شد ایجاد کنیم.

۲٫۲ اتصال پایگاه داده و ایجاد جدول

SQLAlchemy به ما کمک می‌کند که به پایگاه داده خود وصل شویم و psycopg نیز یک پوشش PostgreSQL برای پایتون محسوب می‌شود. البته لزومی به آشنایی با جزییات آن نداریم و کافی است این دو کتابخانه را نصب کرده و به کدنویسی بپردازیم.

#Import dependencies from flask import Flask, render_template from flask.ext.sqlalchemy import SQLAlchemy  #Create instance of Flask App app = Flask(__name__)  #Connect to the Database app.config['SQLALCHEMY_DATABASE_URI']='postgresql://postgres:[email protected]/DataCollector' db = SQLAlchemy(app)  class Data(db.Model):     #create a table     __tablename__ = "data"     id = db.Column(db.Integer, primary_key = True)     height = db.Column(db.Integer)     weight = db.Column(db.Integer)     shoesize = db.Column(db.Integer)     sex = db.Column(db.String)      def __init__(self, height, weight, shoesize, sex):         self.height = height         self.weight = weight         self.shoesize = shoesize         self.sex = sex  #Define Route and Contant of that page @app.route("/") def index():     return render_template("index.html")  #Define 2nd Route and Content @app.route("/success", methods = ['POST']) def success():     return render_template("success.html")  #Running and Controlling the script if (__name__ =="__main__"): app.run(debug=True)

اتصال به پایگاه داده

در ادامه باید اپلیکیشن خود را با وارد کردن نام کاربری، رمز عبور و نام پایگاه داده پیکربندی کنیم. پس از //:postgresql ابتدا نام کاربری و سپس یک دونقطه (:) و سپس رمز عبور را وارد می‌کنیم. درنهایت نوبت به نام پایگاه داده می‌رسد. زمانی که این کارها را انجام دادید باید یک وهله از SQLAlchemy بسازید.

سپس نوبت به کلاس می‌رسد. برنامه‌نویسی شیءگرا در این مرحله به کمک ما می‌آید. اگر با مفاهیم شیءگرایی آشنا نیستید، پیشنهاد می‌کنیم مقاله زیر را مطالعه کنید:

  • برنامه‌نویسی شیءگرا در پایتون — یک راهنمای مقدماتی برای مبتدیان

ما به کمک وهله‌ای که ساخته‌ایم یک مدل ایجاد می‌کنیم. در این مدل نام جدول و نام همه ستون‌هایی را که کاربر در آن‌ها مقداری وارد می‌کند را می‌آوریم. ما قصد نداریم همه کدها را بنویسیم چون هنوز ناقص است و از این رو مدل را به صورت دستی اجرا می‌کنیم. به این منظور به دایرکتوری app بروید و کنسول پایتون را با وارد کردن دستور python باز کنید و دستورهای زیر را وارد کنید:

from app import db  db.create_all()

PostgreSQL و Flask

همان طور که می‌بینید جدول و همه ستون‌های ما آماده ذخیره‌سازی داده‌ها هستند. تنها کاری که اکنون باید انجام دهیم این است که ۳ خط کد واقعی برای اجرایی شدن همه چیز بنویسیم.

۲٫۳ ذخیره‌سازی داده‌ها در پایگاه داده

#Import dependencies from flask import Flask, render_template, request from flask_sqlalchemy import SQLAlchemy  #Create instance of Flask App app = Flask(__name__)  #Connect to the Database app.config['SQLALCHEMY_DATABASE_URI']='postgresql://postgres:[email protected]/DataCollector' db = SQLAlchemy(app)  class Data(db.Model):     #create a table     __tablename__ = "data"     id = db.Column(db.Integer, primary_key = True)     height = db.Column(db.Integer)     weight = db.Column(db.Integer)     shoesize = db.Column(db.Integer)     sex = db.Column(db.String)      def __init__(self, height, weight, shoesize, sex):         self.height = height         self.weight = weight         self.shoesize = shoesize         self.sex = sex  #Define Route and Contant of that page @app.route("/") def index():     return render_template("index.html")  #Define 2nd Route and Content @app.route("/success", methods = ['POST']) def success():     if(request.method == 'POST'):         height_ = request.form["height"]         weight_ = request.form["weight"]         shoesize_ = request.form["shoesize"]         sex_ = request.form["sex"]         data = Data(height_,weight_,shoesize_,sex_)         db.session.add(data)         db.session.commit()         return render_template("success.html")  #Running and Controlling the script if (__name__ =="__main__"): app.run(debug=True)

ما متد را بررسی می‌کنیم و در صورتی که POST باشد داده‌های وارد شده از سوی کاربر در متغیرها را ذخیره می‌کنیم. اینک باید یک «نشست» (Session) ایجاد، داده‌ها را به پایگاه داده اضافه و درنهایت کامیت کنیم. بدین ترتیب کار در این مرحله پایان می‌یابد.

PostgreSQL و Flask

PostgreSQL و Flask

گام سوم: توزیع وب اپلیکیشن روی سرور آنلاین

شما قبلاً با روش ایجاد ۳ فایل مورد نیاز و توزیع وب اپلیکیشن روی سرورهای Heroku آشنا شده‌اید. برای این که این وب اپلیکیشن آنلاین شود ابتدا باید آن فرایند را تکرار کنیم. زمانی که وب اپلیکیشن آنلاین شد، باید یک پایگاه داده روی سرور Heroku بسازیم که اسکریپت اصلی ما را به جایی در localhost متصل می‌کند. به این منظور باید وارد CLI مربوط به Heroku شویم و یک پایگاه داده را با واردکردن دستور زیر ایجاد کنیم. در این دستور dataforml نام اپلیکیشن ما است.

heroku addons:create heroku-postgresql:hobby-dev --app dataforml

نکته: ابتدا باید اپلیکیشن آنلاین شود تا بتوانید اقدامات فوق را اجرا کنید.

PostgreSQL و Flask

دستور زیر را وارد کنید تا URI پایگاه داده را مشاهده کنید و در اسکریپت اصلی نمایش یابد (خط ۹ کد زیر را ببینید):

heroku config --app dataforml

اکنون گام نهایی همانند زمانی که جدول را روی localhost ایجاد کردیم، ساختن آن روی Heroku است. بنابراین پوسته پایتون را روی Heroku با دستور زیر باز کنید:

heroku run python from (name of your main file) import db db.create_all() exit()

کد نهایی

بدین ترتیب کار به پایان رسیده و اپلیکیشن گردآوری داده‌ها راه‌اندازی شده است. کد این اپلیکیشن پس از پیکربندی پایگاه داده Heroku به صورت زیر درمی‌آید:

#Import dependencies from flask import Flask, render_template, request from flask_sqlalchemy import SQLAlchemy  #Create instance of Flask App app = Flask(__name__)  #Connect to the Database app.config['SQLALCHEMY_DATABASE_URI']='postgres://qlypyonycmvmjc:4[email protected]ec2-23-23-184-76.compute-1.amazonaws.com:5432/d8cvi73sj545ot?sslmode=require' db = SQLAlchemy(app)  class Data(db.Model):     #create a table     __tablename__ = "data"     id = db.Column(db.Integer, primary_key = True)     height = db.Column(db.Integer)     weight = db.Column(db.Integer)     shoesize = db.Column(db.Integer)     sex = db.Column(db.String)      def __init__(self, height, weight, shoesize, sex):         self.height = height         self.weight = weight         self.shoesize = shoesize         self.sex = sex  #Define Route and Contant of that page @app.route("/") def index():     return render_template("index.html")  #Define 2nd Route and Content @app.route("/success", methods = ['POST']) def success():     if(request.method == 'POST'):         height_ = request.form["height"]         weight_ = request.form["weight"]         shoesize_ = request.form["shoesize"]         sex_ = request.form["sex"]         data = Data(height_,weight_,shoesize_,sex_)         db.session.add(data)         db.session.commit()         return render_template("success.html")  #Running and Controlling the script if (__name__ =="__main__"): app.run(debug=True)

بررسی صحت داده‌ها

اینک از کجا بدانیم که داده‌ها به صورت صحیحی ذخیره شده‌اند؟ برای بررسی داده‌ها می‌توانید پایگاه داده روی Heroku.com را باز کنید و یا دستور زیر را در خط فرمان وارد کنید:

heroku pg:psql --app dataforml

خروجی آن به صورت زیر است:

PostgreSQL و Flask

برای نوشتن یک کوئری از خط فرمان عبارت زیر را وارد کنید:

select * from data

در خروجی همه داده‌های ثبت‌شده خود را مشاهده خواهید کرد.

سخن پایانی

از آنجا که پردازش‌های کوچک زیادی در بک‌اند وجود دارند، پوشش دادن همه آن‌ها در یک مطلب کار دشواری است. اما ما در این نوشته تلاش کرده‌ایم همه مواردی که ضروری بودند را توضیح دهیم. در مورد داده‌ها نیز باید بگوییم که ما یک ابزار طبقه‌بندی جنسیت را آموزش می‌دهیم که به طبقه‌بندی جنسیت کاربر بر مبنای قد، وزن و اندازه کفش می‌پردازد. وب اپلیکیشن ما در حال حاضر در آدرس DataForML.herokuapp.com آنلاین است و در حدود یک دقیقه طول می‌کشد تا پاسخ دهد. شما نیز می‌توانید داده‌های خود را در آن وارد کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

  • مجموعه آموزش‌های برنامه‌‌نویسی
  • گنجینه آموزش های برنامه نویسی پایتون (Python)
  • مجموعه آموزش‌های برنامه‌نویسی پایتون
  • زبان برنامه نویسی پایتون (Python) — از صفر تا صد
  • ساخت وب اپلیکشن با فلسک (Flask) و Google App Engine – به زبان ساده
  • آموزش پایتون: ساخت و انتشار وب سایت با Flask — به زبان ساده

==

بلی خیر

نوشته آموزش پایتون: وب اپلیکیشن برای گردآوری داده با استفاده از PostgreSQL و Flask اولین بار در مجله فرادرس. پدیدار شد.

درباره ی admin

مطلب پیشنهادی

تعمیر یک هارد درایو خراب و بازیابی داده های آن— به زبان ساده

گفته شده که وقتی انسان می‌میرد، کل زندگیش در یک لحظه از جلوی چشمانش عبور می‌کند. البته همین اتفاق در صورتی که مطلع شوید با یک هارد درایو خراب مواجه شده‌اید نیز ممکن است برای شما می‌افتد! در این لحظه یاد هزاران عکس می‌افتید که از آن‌ها پشتیبان‌گیری نکرده‌اید و احتمالاً به فکر بازیابی آن‌ها بیفتید. در این مقاله روش این کار را توضیح می‌دهیم. اگر هارددیسک شما از کار بیفتد، با استفاده از این راهنما می‌توانید داده‌های خود را تعمیر و بازیابی کنید. داستان یک فرد نادم در این بخش داستانی را برای شما تعریف می‌کنیم که ممکن است برای هر کدام از ما اتفاق بیفتد. قهرمان داستان ما چند سال پیش با یک خرابی هارددیسک مواجه شده است. ابتدای قضیه از عملکرد عجیب لپ‌تاپ آغاز می‌شود. زمانی که این عملکرد عجیب پس از ریبوت لپ‌تاپ همچنان تداوم می‌یابد وی متوجه می‌شود که مشکل چیزی بیش از یک پر شدن ظرفیت RAM است. درنتیجه بی‌درنگ اقدام به پشتیبانی گیری از فایل‌های جدید خود می‌کند. نیم ساعت بعد هارددیسک با سر و صدا از کار می‌افتد و لپ‌تاپ دیگر بوت نمی‌شود. وی قبلاً نسخه‌های پشتیبانی از فایل‌های خود تهیه کرده بود؛ اما ش..

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

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