Django হলো একটি পাওয়ারফুল ও জনপ্রিয় Python web framework, যা Relational Databases (যেমন PostgreSQL, MySQL) এর সাথে খুব ভালোভাবে কাজ করে। তবে কিছু সিচুয়েশন বা ছোট প্রকল্পে আপনি NoSQL databases যেমন TinyDB ব্যবহার করতে চাইতে পারেন, যেখানে ডেটা ফাইল-ভিত্তিক এবং সার্ভার-মুক্ত স্টোরেজ সুবিধা দেয়।
এখানে আমরা আলোচনা করব কীভাবে একটি Django web application এ TinyDB ব্যবহার করা যায়, ডেটাবেসের জন্য ফাইল সিস্টেমের মাধ্যমে সহজ এবং কার্যকর ডেটা স্টোরেজ তৈরি করার জন্য।
১. TinyDB ইনস্টল করা
প্রথমেই, আপনার Django প্রকল্পে TinyDB ব্যবহার করার জন্য TinyDB ইনস্টল করতে হবে।
pip install tinydb
এটি ইনস্টল হলে, আপনি Django অ্যাপ্লিকেশন এ TinyDB ব্যবহার করতে পারবেন।
২. TinyDB এবং Django Settings এ কনফিগারেশন
Django তে ডিফল্টভাবে SQLite, PostgreSQL, MySQL ইত্যাদি রিলেশনাল ডাটাবেস ব্যবহৃত হয়। তবে আমরা TinyDB ব্যবহার করার জন্য Django এর settings.py ফাইলে কনফিগারেশন করতে পারি। এতে Django সাধারণত ডেটাবেসের জন্য যে স্টোরেজ ব্যবহার করে, সেখানে আপনি TinyDB সিস্টেম কনফিগার করতে পারেন।
প্রথমে TinyDB এর জন্য একটি কাস্টম স্টোরেজ তৈরি করতে হবে, যা Django এর models.py এ TinyDB ব্যবহার করতে সাহায্য করবে।
৩. TinyDB ডেটাবেস ব্যবহারের জন্য Custom Storage তৈরি করা
TinyDB ডেটাবেসে ডেটা সংরক্ষণ করার জন্য, Django তে Custom Storage তৈরি করা প্রয়োজন।
উদাহরণ: tinydb_storage.py
from tinydb import TinyDB, Query
from tinydb.storages import JSONStorage
class TinyDBStorage(JSONStorage):
def __init__(self, path):
super().__init__(path)
self.db = TinyDB(path)
def insert(self, data):
self.db.insert(data)
def update(self, data, query):
self.db.update(data, query)
def remove(self, query):
self.db.remove(query)
def all(self):
return self.db.all()
এখানে, আমরা TinyDBStorage ক্লাস তৈরি করেছি, যা Django এর ডেটাবেস ইন্টারফেসের মতো কাজ করবে।
৪. Django Models এ TinyDB ব্যবহার
Django তে, আপনি TinyDB কে কাস্টম স্টোরেজ হিসেবে ব্যবহার করতে পারেন। Django এর সাধারণ models.Model এর পরিবর্তে, আমরা TinyDBStorage ব্যবহার করব।
উদাহরণ: models.py
from django.db import models
from tinydb_storage import TinyDBStorage
class TinyDBModel(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
@classmethod
def insert(cls, data):
storage = TinyDBStorage('db.json')
storage.insert(data)
@classmethod
def update(cls, data, query):
storage = TinyDBStorage('db.json')
storage.update(data, query)
@classmethod
def delete(cls, query):
storage = TinyDBStorage('db.json')
storage.remove(query)
@classmethod
def all(cls):
storage = TinyDBStorage('db.json')
return storage.all()
এখানে, TinyDBModel একটি Django মডেল হিসেবে তৈরি করা হয়েছে, তবে এটি TinyDBStorage ব্যবহার করে ডেটা ইনসার্ট, আপডেট, এবং ডিলিট করার জন্য কাস্টম ক্লাস তৈরি করেছে।
৫. Django Views তে TinyDB ব্যবহার
Django তে TinyDB ব্যবহার করার জন্য, আমরা views.py এ TinyDB ব্যবহার করতে পারি।
উদাহরণ: views.py
from django.shortcuts import render
from .models import TinyDBModel
def index(request):
# TinyDB থেকে ডেটা পড়া
data = TinyDBModel.all()
return render(request, 'index.html', {'data': data})
def add_user(request):
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST.get('age')
TinyDBModel.insert({'name': name, 'age': age})
return render(request, 'add_user.html')
def update_user(request, user_id):
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST.get('age')
TinyDBModel.update({'name': name, 'age': age}, Query().name == user_id)
return render(request, 'update_user.html')
def delete_user(request, user_id):
TinyDBModel.delete(Query().name == user_id)
return render(request, 'delete_user.html')
এখানে, আমরা TinyDBModel এর মাধ্যমে ডেটা insert, update, এবং delete করেছি Django এর ভিউ ফাংশনে।
৬. TinyDB এবং Django Template এর সাথে ইন্টিগ্রেশন
TinyDB থেকে ডেটা Django টেমপ্লেটে পাঠানো এবং ব্যবহার করা খুবই সহজ।
উদাহরণ: index.html
<!DOCTYPE html>
<html>
<head>
<title>TinyDB Example</title>
</head>
<body>
<h1>All Users</h1>
<ul>
{% for user in data %}
<li>{{ user.name }} - {{ user.age }}</li>
{% endfor %}
</ul>
</body>
</html>
এখানে, আমরা TinyDBModel.all() থেকে data পাঠাচ্ছি এবং Django টেমপ্লেটের মধ্যে display করছি।
৭. TinyDB তে ডেটা অনুসন্ধান এবং ফিল্টারিং
TinyDB তে ডেটা অনুসন্ধান করতে Query ক্লাস ব্যবহার করতে হবে।
উদাহরণ: views.py তে ডেটা অনুসন্ধান
def search_user(request):
query = request.GET.get('query')
result = TinyDBModel.all()
filtered_result = [user for user in result if query.lower() in user['name'].lower()]
return render(request, 'search_results.html', {'data': filtered_result})
এখানে, আমরা TinyDBModel.all() থেকে সমস্ত ব্যবহারকারীর ডেটা নিয়ে এসে search করেছি।
সারাংশ
- Django অ্যাপ্লিকেশন এ TinyDB ব্যবহার করতে হলে, আপনাকে Custom Storage তৈরি করতে হবে যাতে TinyDB কে Django মডেলস এর মতো ব্যবহার করা যায়।
- Django মডেলস এবং ভিউগুলোর মাধ্যমে আপনি TinyDB ডেটাবেসের জন্য Insert, Update, Delete, এবং Query অপারেশন করতে পারেন।
- Django এর টেমপ্লেট সিস্টেমের মাধ্যমে TinyDB এর ডেটা প্রদর্শন করা যায়।
- TinyDB ডেটাবেস খুবই ছোট এবং হালকা হওয়ায়, এটি Django অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত যেখানে বড় ডাটাবেস সিস্টেমের প্রয়োজন নেই।
এই পদ্ধতিটি ছোট প্রকল্প বা প্রোটোটাইপ ডেভেলপমেন্টের জন্য কার্যকরী হতে পারে, তবে বড় অ্যাপ্লিকেশনগুলির জন্য সেগুলির জন্য একটি শক্তিশালী রিলেশনাল ডাটাবেস ব্যবহারের পরামর্শ দেওয়া হয়।
Read more