TinyDB ডেটা সংরক্ষণের জন্য JSON ফাইল ব্যবহার করে, তবে কখনো কখনো ডেটা সঠিকভাবে সংরক্ষণ করা বা পুনরুদ্ধার করার জন্য Custom Serialization প্রয়োজন হতে পারে। এটি বিশেষত যখন আপনি কোনো কাস্টম অবজেক্ট বা ডেটা ফর্ম্যাট ব্যবহার করতে চান, তখন কাজে আসে।
TinyDB-তে Custom Data Serialization করতে আমরা TinyDB এর JSONStorage ক্লাসের custom serializer এবং deserializer ব্যবহার করতে পারি।
Custom Data Serialization কিভাবে কাজ করে
TinyDB-এর Custom Serialization ব্যবহার করতে হলে আপনাকে দুটি কাজ করতে হবে:
- Custom Serializer: আপনার ডেটার কাস্টম ফরম্যাটে রূপান্তর করা।
- Custom Deserializer: সেভ করা ডেটাকে পুনরুদ্ধার করার সময় সেই কাস্টম ফরম্যাট থেকে ফিরে আসা।
উদাহরণ: কাস্টম Serializer এবং Deserializer
ধরা যাক, আমাদের একটি কাস্টম ডেটা টাইপ Person আছে এবং আমরা চাই যে এটি TinyDB-তে JSON ফাইলে সংরক্ষণ করার আগে কিছু কাস্টম ফরম্যাটে রূপান্তরিত হোক এবং পড়ার সময় আবার সেই কাস্টম ফরম্যাট থেকে মূল অবজেক্টে ফিরিয়ে আনা হোক।
১. Custom Serializer তৈরি করা
প্রথমে, Person ক্লাসটি তৈরি করুন এবং তার জন্য একটি কাস্টম serializer তৈরি করুন:
from tinydb import TinyDB, Query
import json
# কাস্টম অবজেক্ট: Person
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person({self.name}, {self.age})"
# Custom serializer
def person_serializer(obj):
if isinstance(obj, Person):
return {'__type__': 'Person', 'name': obj.name, 'age': obj.age}
raise TypeError(f"Type {type(obj)} not serializable")
# Custom deserializer
def person_deserializer(obj):
if '__type__' in obj and obj['__type__'] == 'Person':
return Person(obj['name'], obj['age'])
return obj
person_serializerফাংশনটিPersonঅবজেক্টকে একটি dictionary তে রূপান্তরিত করবে যাতেnameএবংageফিল্ড থাকবে, এবং__type__নামক একটি স্পেশাল কিও থাকবে যা জানাবে এটি একটি Person অবজেক্ট।person_deserializerফাংশনটি JSON ডেটা থেকে Person অবজেক্ট পুনরুদ্ধার করবে।
২. TinyDB-তে Custom Serialization ব্যবহার করা
এখন, TinyDB-এ এই কাস্টম serializer এবং deserializer ব্যবহার করতে:
# TinyDB এ Custom Serializer এবং Deserializer ব্যবহার করা
db = TinyDB('database.json', storage=TinyDB.storage.JSONStorage)
# JSONStorage তে কাস্টম serializer এবং deserializer যোগ করা
db.serializer = person_serializer
db.deserializer = person_deserializer
# Person অবজেক্ট তৈরি করা
person1 = Person("Rahim", 30)
person2 = Person("Karim", 25)
# টেবিল তৈরি
people_table = db.table('people')
# Person অবজেক্ট ডাটাবেসে ইনসার্ট করা
people_table.insert(person1)
people_table.insert(person2)
# ডেটা রিট্রাইভ করা
retrieved_person = people_table.all()
print("Retrieved Data:", retrieved_person)
কাস্টম Serialization এর সুবিধা
- অবজেক্ট সংরক্ষণ: আপনি যদি কাস্টম অবজেক্ট বা ডেটা স্ট্রাকচার ব্যবহার করেন তবে তা সরাসরি JSON এ সংরক্ষণ করতে পারেন।
- সুবিধাজনক: ডেটা পুনরুদ্ধারের সময় আপনি সহজেই কাস্টম ডেটা স্ট্রাকচার পেতে পারেন, যা আরও সহজে ব্যবহারযোগ্য এবং টেবিলের মধ্যে সঠিকভাবে মাপা যাবে।
- ইনফরমেশন রিটেনশন: JSON ফাইলে সঠিকভাবে অবজেক্ট স্টোর করা হলে, তা পুনরুদ্ধার এবং ব্যবহার করা সহজ হবে।
সারাংশ
TinyDB তে Custom Data Serialization ব্যবহার করার মাধ্যমে আপনি কাস্টম অবজেক্ট বা ডেটা স্ট্রাকচারকে JSON ফাইলের মাধ্যমে সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন। এই পদ্ধতি আপনাকে ডেটার কাস্টম ফরম্যাটে পরিচালনা করতে সহায়ক হয়, যা ডেটাবেস ব্যবস্থাপনাকে আরও সহজ এবং লচিল করে তোলে।
Read more