Custom Storage Class তৈরি এবং ব্যবহার

Serialization এবং Custom Storage - টাইনিডিবি (TinyDB) - Database Tutorials

361

TinyDB তে Custom Storage Class তৈরি করে, আপনি ডেটা সংরক্ষণের জন্য নিজের পছন্দসই পদ্ধতি বা ফাইল ফর্ম্যাট ব্যবহার করতে পারেন। সাধারণত, TinyDB JSON ফাইল ব্যবহার করে ডেটা সংরক্ষণ করে, তবে আপনার যদি কাস্টম স্টোরেজ সলিউশন দরকার হয় (যেমন SQLite, CSV, বা অন্য কোনো ফাইল ফরম্যাট), তাহলে আপনি একটি Custom Storage Class তৈরি করতে পারেন।

এখানে একটি Custom Storage Class তৈরির উদাহরণ দেওয়া হয়েছে, যা আপনার TinyDB ডাটাবেসকে অন্য ফাইল বা স্টোরেজ সিস্টেমে সংরক্ষণ করতে সক্ষম করবে।


Custom Storage Class তৈরি করার পদ্ধতি

১. Storage Interface তৈরি করা

TinyDB এর স্টোরেজ মডিউল কাস্টমাইজ করার জন্য, প্রথমে আপনাকে Storage ক্লাসের একটি কাস্টম ইমপ্লিমেন্টেশন তৈরি করতে হবে।

from tinydb.storages import Storage
import json

class CustomStorage(Storage):
    def __init__(self, filename):
        self.filename = filename
        self._data = self._load_data()

    def _load_data(self):
        try:
            with open(self.filename, 'r') as f:
                return json.load(f)
        except (FileNotFoundError, json.JSONDecodeError):
            return {}

    def write(self, data):
        with open(self.filename, 'w') as f:
            json.dump(data, f, indent=4)

    def read(self):
        return self._data

এই CustomStorage ক্লাসে:

  • __init__ মেথডে ফাইলের নাম পাস করা হয় এবং ডেটা লোড করার জন্য _load_data() ফাংশন ব্যবহৃত হয়।
  • read() মেথডে ডেটা রিড করা হয়।
  • write() মেথডে ডেটা ফাইলে সংরক্ষণ করা হয়।

এখন আপনি CustomStorage ক্লাস ব্যবহার করে আপনার ডেটাবেস স্টোরেজ কাস্টমাইজ করতে পারবেন।


২. TinyDB এ Custom Storage ব্যবহার করা

TinyDB তে আপনার CustomStorage ক্লাস ব্যবহার করার জন্য, TinyDB এর storage প্যারামিটারটি কাস্টম স্টোরেজ ক্লাসের মাধ্যমে ইনস্ট্যান্সিয়েট করা হবে।

from tinydb import TinyDB

# CustomStorage ক্লাস ব্যবহার করে TinyDB ইনস্ট্যান্স তৈরি
db = TinyDB(storage=CustomStorage, filename='custom_db.json')

# ডেটা ইনসার্ট করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})

# সব ডেটা দেখতে
print(db.all())

এখানে, TinyDB ডাটাবেসে CustomStorage ব্যবহৃত হচ্ছে এবং custom_db.json ফাইলটি ডেটা সংরক্ষণের জন্য ব্যবহার করা হচ্ছে।


৩. Custom Storage ব্যবহারকারী কাস্টম ফাইল ফরম্যাট (যেমন CSV, SQLite)

আপনি চাইলে JSON-এর পরিবর্তে CSV বা SQLite ফরম্যাটও ব্যবহার করতে পারেন। তার জন্য শুধু আপনার CustomStorage ক্লাসে ফাইল রিড/রাইট ফাংশনগুলো কাস্টমাইজ করতে হবে।

CSV স্টোরেজের উদাহরণ:

import csv
from tinydb.storages import Storage

class CSVStorage(Storage):
    def __init__(self, filename):
        self.filename = filename
        self._data = self._load_data()

    def _load_data(self):
        try:
            with open(self.filename, newline='', mode='r') as f:
                reader = csv.DictReader(f)
                return list(reader)
        except (FileNotFoundError, csv.Error):
            return []

    def write(self, data):
        fieldnames = data[0].keys() if data else []
        with open(self.filename, mode='w', newline='') as f:
            writer = csv.DictWriter(f, fieldnames=fieldnames)
            writer.writeheader()
            writer.writerows(data)

    def read(self):
        return self._data

এখানে CSVStorage ক্লাসে ডেটা CSV ফাইলে রিড/রাইট করা হচ্ছে।


সারাংশ

  • Custom Storage Class তৈরি করতে, আপনি TinyDB এর স্টোরেজ মডিউল কাস্টমাইজ করতে পারেন।
  • Custom Storage ক্লাসের মধ্যে, ডেটা রিড/রাইট করার জন্য আপনার কাঙ্খিত পদ্ধতি (যেমন JSON, CSV, SQLite) ব্যবহার করতে পারবেন।
  • এটি TinyDB-কে আপনার নির্দিষ্ট স্টোরেজ ব্যবস্থায় সংহত করতে সক্ষম করে, যেমন নিজের ডিজাইন করা ডেটাবেস বা অন্য কোন ফাইল ফরম্যাটে ডেটা সংরক্ষণ।

এই কাস্টম স্টোরেজ ক্লাসের মাধ্যমে আপনি TinyDB এর কার্যক্ষমতা আরও প্রসারিত এবং কাস্টমাইজড করে নিতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...