Django Framework এর সাথে TinyDB ব্যবহার

TinyDB এবং Django Integration - টাইনিডিবি (TinyDB) - Database Tutorials

342

TinyDB একটি হালকা-ওজনের, NoSQL ডাটাবেস যা JSON ফাইল ব্যবহার করে ডেটা সংরক্ষণ করে। এটি ছোট বা প্রোটোটাইপ অ্যাপ্লিকেশন এবং সার্ভারের জন্য উপযুক্ত, যেখানে আপনি সার্ভার-মুক্ত বা লাইটওয়েট ডেটাবেস সমাধান চান। Django একটি পাওয়ারফুল Python ওয়েব ফ্রেমওয়ার্ক যা ORM (Object-Relational Mapping) ব্যবহার করে ডেটাবেসের সাথে ইন্টিগ্রেটেড থাকে, তবে এটি মূলত রিলেশনাল ডাটাবেস সমর্থন করে, যেমন MySQL, PostgreSQL, SQLite, ইত্যাদি।

Django তে TinyDB ব্যবহার করা একটু অনন্য, কারণ Django স্বাভাবিকভাবে রিলেশনাল ডাটাবেসের সাথে কাজ করতে ডিজাইন করা হয়েছে, তবে আপনি Django অ্যাপ্লিকেশনে TinyDB ব্যবহার করতে পারেন একটি custom storage backend তৈরি করে।

এখানে আমরা দেখব কিভাবে Django তে TinyDB ব্যবহার করা যায়।


Django তে TinyDB ব্যবহারের ধাপ

  1. TinyDB ইনস্টল করা: প্রথমে আপনাকে TinyDB ইনস্টল করতে হবে, যা আপনি pip এর মাধ্যমে ইনস্টল করতে পারবেন।

    pip install tinydb
    
  2. Django মডেলে TinyDB ব্যবহার করা: Django তে ডেটা সংরক্ষণের জন্য একটি custom model manager এবং TinyDB এর সাথে ইন্টিগ্রেশন করতে হবে। এই জন্য Django মডেলগুলো TinyDB টেবিলের সাথে ম্যানেজ করা হবে।

Django তে TinyDB ব্যবহার করার উদাহরণ

  1. Model Manager তৈরি করা:

    Django মডেল ক্লাসে TinyDB ব্যবহার করার জন্য, আপনাকে একটি custom model manager তৈরি করতে হবে।

    from django.db import models
    from tinydb import TinyDB, Query
    
    class TinyDBManager(models.Manager):
        def __init__(self, db_path='db.json'):
            self.db = TinyDB(db_path)
            super().__init__()
    
        def all(self):
            return self.db.all()
    
        def get(self, pk):
            return self.db.search(Query().id == pk)
    
        def create(self, **kwargs):
            return self.db.insert(kwargs)
        
        def update(self, pk, **kwargs):
            self.db.update(kwargs, Query().id == pk)
        
        def delete(self, pk):
            self.db.remove(Query().id == pk)
    
    

    এই TinyDBManager ক্লাসটি Django মডেল ক্লাসের জন্য ডেটাবেস অপারেশনগুলো (যেমন create, update, delete, get, all) পরিচালনা করবে, তবে এটি TinyDB এর মাধ্যমে।

  2. Model তৈরি করা:

    Django মডেল তৈরির সময়, আপনি TinyDBManager ব্যবহারের মাধ্যমে ডেটা পরিচালনা করতে পারবেন।

    class TinyDBModel(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=100)
        age = models.IntegerField()
    
        objects = TinyDBManager()
    
        class Meta:
            managed = False  # Django ORM এর জন্য না, কারণ আমরা TinyDB ব্যবহার করছি।
    

    এখানে TinyDBModel ক্লাসটি Django মডেল হিসেবে তৈরি করা হয়েছে, তবে এর ডেটা TinyDB ব্যবহার করে পরিচালিত হবে।

  3. Django Views ব্যবহার করে TinyDB তে ডেটা ইন্টিগ্রেশন:

    Django views এ ডেটা সংরক্ষণ এবং পুনরুদ্ধারের জন্য আপনি আপনার TinyDBModel ব্যবহার করতে পারেন।

    from django.http import JsonResponse
    from .models import TinyDBModel
    
    def create_entry(request):
        name = request.GET.get('name', '')
        age = request.GET.get('age', 0)
        obj = TinyDBModel.objects.create(name=name, age=age)
        return JsonResponse({'id': obj, 'status': 'Created'})
    
    def get_entries(request):
        entries = TinyDBModel.objects.all()
        return JsonResponse({'entries': entries})
    

    এই উদাহরণে, create_entry ফাংশন TinyDBModel এর একটি নতুন এন্ট্রি তৈরি করে এবং get_entries ফাংশন TinyDB থেকে সমস্ত এন্ট্রি নিয়ে আসে।

  4. ব্যবহারকারী কনফিগারেশন:

    আপনি যদি TinyDB এর ফাইল পাথ বা অন্যান্য কনফিগারেশন পরিবর্তন করতে চান, তাহলে আপনি TinyDBManager এ পাথ পরিবর্তন করতে পারেন:

    tinydb = TinyDB('path_to_your_db_file.json')
    

সারাংশ

Django তে TinyDB ব্যবহার করার জন্য আপনাকে custom manager তৈরি করতে হবে, যাতে Django মডেলগুলোর মাধ্যমে TinyDB এ ডেটা সংরক্ষণ এবং পুনরুদ্ধার করা যায়। এই ইন্টিগ্রেশন Django তে সাধারণ রিলেশনাল ডাটাবেসের পরিবর্তে NoSQL সমাধান ব্যবহার করার সুযোগ দেয়। তবে মনে রাখতে হবে, Django মূলত রিলেশনাল ডাটাবেসে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই TinyDB এর ব্যবহার ব্যক্তিগত প্রোজেক্ট বা স্কেলেবল সিস্টেম এর জন্য উপযুক্ত হতে পারে না।

Content added By
Promotion

Are you sure to start over?

Loading...