Flask অ্যাপ্লিকেশন তৈরির সময় CRUD (Create, Read, Update, Delete) অপারেশনগুলি খুবই গুরুত্বপূর্ণ। এগুলি আপনাকে একটি ডাটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করতে, ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলার সুযোগ দেয়। এই গাইডে, আমরা দেখব কিভাবে Flask ব্যবহার করে CRUD অপারেশন তৈরি করতে হয়, ডাটাবেসের সাথে ইন্টিগ্রেট করতে এবং ডেটা ম্যানেজমেন্টে এই অপারেশনগুলো ব্যবহার করতে হয়।
ব্যবহৃত টুলস:
- Flask: ওয়েব ফ্রেমওয়ার্ক।
- Flask-SQLAlchemy: SQLAlchemy ব্যবহারের জন্য Flask এক্সটেনশন। এটি ডাটাবেসের সাথে যোগাযোগ সহজ করে।
১. প্রাথমিক সেটআপ
প্রথমে Flask এবং Flask-SQLAlchemy ইন্সটল করতে হবে:
pip install flask flask-sqlalchemy
২. Flask অ্যাপ্লিকেশন তৈরি
ধাপ ১: app.py ফাইল তৈরি করুন
এখন Flask অ্যাপ এবং SQLAlchemy কনফিগারেশন সেটআপ করব।
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# ডাটাবেস কনফিগারেশন
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' # SQLite ডাটাবেস
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # অতিরিক্ত ট্যাকিং বন্ধ করা
db = SQLAlchemy(app)
# User মডেল
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(100), nullable=False, unique=True)
def __repr__(self):
return f'<User {self.name}>'
# ডাটাবেস টেবিল তৈরি করা
with app.app_context():
db.create_all()
@app.route("/")
def index():
users = User.query.all() # সমস্ত ব্যবহারকারীকে ডাটাবেস থেকে নিয়ে আসা
return render_template('index.html', users=users)
এখানে:
- SQLAlchemy কনফিগারেশন:
SQLALCHEMY_DATABASE_URIব্যবহার করে ডাটাবেস URI সেট করা হয়েছে, যা একটি SQLite ডাটাবেসের সাথে সংযোগ করবে। - User মডেল:
Userক্লাস ডাটাবেসের একটি টেবিল হিসেবে কাজ করে। এতেid,name, এবংemailফিল্ড রয়েছে।
৩. CRUD অপারেশন: Create, Read, Update, Delete
Create (তৈরি করা)
ব্যবহারকারী যোগ করার জন্য একটি ফর্ম তৈরি করতে হবে। এটি POST রিকোয়েস্ট গ্রহণ করবে এবং ডাটাবেসে নতুন ব্যবহারকারী যুক্ত করবে।
@app.route("/add", methods=["GET", "POST"])
def add_user():
if request.method == "POST":
name = request.form['name']
email = request.form['email']
new_user = User(name=name, email=email)
db.session.add(new_user)
db.session.commit() # ডাটাবেসে সেভ করা
return redirect(url_for('index')) # হোম পেজে রিডাইরেক্ট
return render_template('add_user.html')
এখানে:
POSTরিকোয়েস্টেnameএবংemailফর্মের মাধ্যমে গ্রহণ করা হয় এবংnew_userতৈরি করা হয়।db.session.add(): নতুন ব্যবহারকারীটি ডাটাবেসে অ্যাড করা হয়।db.session.commit(): ডাটাবেসে পরিবর্তন সংরক্ষণ করা হয়।
Read (পড়া)
index() ফাংশনটি সমস্ত ব্যবহারকারীদের User.query.all() এর মাধ্যমে ডাটাবেস থেকে নিয়ে আসবে এবং index.html টেমপ্লেটে রেন্ডার করবে।
Update (আপডেট করা)
একটি নির্দিষ্ট ব্যবহারকারীকে আপডেট করতে আমরা একটি update_user রাউট তৈরি করব।
@app.route("/update/<int:id>", methods=["GET", "POST"])
def update_user(id):
user = User.query.get_or_404(id) # নির্দিষ্ট ব্যবহারকারী ডাটাবেস থেকে খুঁজে বের করা
if request.method == "POST":
user.name = request.form['name']
user.email = request.form['email']
db.session.commit() # পরিবর্তন সেভ করা
return redirect(url_for('index'))
return render_template('update_user.html', user=user)
এখানে:
User.query.get_or_404(id):idএর ভিত্তিতে ডাটাবেস থেকে ব্যবহারকারী খোঁজা হয়।db.session.commit(): ডাটাবেসে পরিবর্তন সংরক্ষণ করা হয়।
Delete (মুছে ফেলা)
ব্যবহারকারী মুছে ফেলার জন্য একটি delete_user রাউট তৈরি করব।
@app.route("/delete/<int:id>")
def delete_user(id):
user = User.query.get_or_404(id)
db.session.delete(user) # ব্যবহারকারী ডিলিট করা
db.session.commit() # পরিবর্তন সেভ করা
return redirect(url_for('index')) # হোম পেজে রিডাইরেক্ট
এখানে:
db.session.delete(user): নির্দিষ্ট ব্যবহারকারীকে ডাটাবেস থেকে মুছে ফেলা হয়।db.session.commit(): ডাটাবেসে পরিবর্তন সংরক্ষণ করা হয়।
৪. HTML টেমপ্লেট তৈরি
index.html (ব্যবহারকারীদের দেখানোর জন্য):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ব্যবহারকারীদের তালিকা</title>
</head>
<body>
<h1>ব্যবহারকারীদের তালিকা</h1>
<a href="{{ url_for('add_user') }}">নতুন ব্যবহারকারী যোগ করুন</a>
<ul>
{% for user in users %}
<li>{{ user.name }} - {{ user.email }}
<a href="{{ url_for('update_user', id=user.id) }}">আপডেট</a>
<a href="{{ url_for('delete_user', id=user.id) }}">মুছে ফেলা</a>
</li>
{% endfor %}
</ul>
</body>
</html>
add_user.html (ব্যবহারকারী যোগ করার জন্য):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>নতুন ব্যবহারকারী যোগ করুন</title>
</head>
<body>
<h1>নতুন ব্যবহারকারী যোগ করুন</h1>
<form method="POST">
<label for="name">নাম:</label><br>
<input type="text" id="name" name="name" required><br>
<label for="email">ইমেইল:</label><br>
<input type="email" id="email" name="email" required><br><br>
<button type="submit">জমা দিন</button>
</form>
</body>
</html>
update_user.html (ব্যবহারকারী আপডেট করার জন্য):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ব্যবহারকারী আপডেট করুন</title>
</head>
<body>
<h1>ব্যবহারকারী আপডেট করুন</h1>
<form method="POST">
<label for="name">নাম:</label><br>
<input type="text" id="name" name="name" value="{{ user.name }}" required><br>
<label for="email">ইমেইল:</label><br>
<input type="email" id="email" name="email" value="{{ user.email }}" required><br><br>
<button type="submit">আপডেট করুন</button>
</form>
</body>
</html>
Flask ব্যবহার করে CRUD অপারেশন (Create, Read, Update, Delete) তৈরি করা খুবই সহজ। Flask-SQLAlchemy-এর মাধ্যমে আপনি সহজেই ডাটাবেস পরিচালনা করতে পারেন এবং CRUD অপারেশন গুলি ওয়েব পৃষ্ঠায় প্রয়োগ করতে পারেন। এই গাইডে দেখানো হয়েছে কিভাবে Flask অ্যাপ্লিকেশনে CRUD অপারেশন তৈরি করা যায়, এবং এটি কীভাবে কাজ করে।
Read more