Skill

TinyDB এর বেসিক Query এবং Data Filtering

টাইনিডিবি (TinyDB) - Database Tutorials

392

TinyDB ডেটা অনুসন্ধান এবং ফিল্টার করার জন্য একটি সহজ এবং কার্যকর পদ্ধতি সরবরাহ করে। এটি ডেটাবেস থেকে ডেটা বের করতে এবং প্রয়োজন অনুযায়ী ফিল্টার করতে Pythonic পদ্ধতি ব্যবহার করে। নিচে বেসিক Query এবং Data Filtering এর প্রক্রিয়া দেখানো হলো:


Query ক্লাস ব্যবহার

TinyDB ডেটা অনুসন্ধানের জন্য Query ক্লাস ব্যবহার করে। এটি একটি ডায়নামিক এবং ফ্লেক্সিবল পদ্ধতিতে ডেটা ফিল্টার করতে সাহায্য করে।

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি এবং ডেটা যোগ করা
db = TinyDB('db.json')
db.insert({'name': 'Rahim', 'age': 25, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 30, 'city': 'Chittagong'})
db.insert({'name': 'Aziz', 'age': 35, 'city': 'Dhaka'})

ডেটা অনুসন্ধান (Search)

search মেথড ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা খুঁজে পাওয়া যায়।

User = Query()
result = db.search(User.city == 'Dhaka')  # 'Dhaka' শহরের ডেটা অনুসন্ধান
print(result)

# আউটপুট:
# [{'name': 'Rahim', 'age': 25, 'city': 'Dhaka'}, {'name': 'Aziz', 'age': 35, 'city': 'Dhaka'}]

ডেটা ফিল্টারিং (Filter)

ডেটা ফিল্টারিংয়ের জন্য শর্ত যোগ করে search ব্যবহার করা হয়। শর্তগুলো লজিকাল অপারেটর (AND, OR) এবং কম্পারিজন অপারেটর দিয়ে তৈরি করা যায়।

# বয়স ৩০ এর বেশি এবং 'Dhaka' শহরের ডেটা ফিল্টার করা
result = db.search((User.age > 30) & (User.city == 'Dhaka'))
print(result)

# আউটপুট:
# [{'name': 'Aziz', 'age': 35, 'city': 'Dhaka'}]

ডেটা খোঁজার জন্য প্যাটার্ন ব্যবহার

~ অপারেটরের মাধ্যমে শর্তকে উল্টো করে (NOT) ফিল্টার করা যায়।

# 'Dhaka' শহরের বাইরের ডেটা
result = db.search(~(User.city == 'Dhaka'))
print(result)

# আউটপুট:
# [{'name': 'Karim', 'age': 30, 'city': 'Chittagong'}]

নির্দিষ্ট ডেটা খুঁজে বের করা (Get)

get মেথড ব্যবহার করে প্রথম পাওয়া ডেটা রিটার্ন করা হয়।

result = db.get(User.name == 'Rahim')
print(result)

# আউটপুট:
# {'name': 'Rahim', 'age': 25, 'city': 'Dhaka'}

ডেটা গণনা (Count)

ডেটার সংখ্যা নির্ধারণের জন্য len বা count ব্যবহার করা যায়।

count = len(db.search(User.city == 'Dhaka'))
print(count)

# আউটপুট:
# 2

Condition Expressions ব্যবহার

ডেটার উপরে আরও শর্ত যোগ করতে where ফাংশন ব্যবহার করা হয়। এটি ডাইনামিক কোয়েরি তৈরিতে সাহায্য করে।

# নামের মধ্যে 'i' অক্ষর আছে এমন ডেটা
result = db.search(User.name.matches('.*i.*'))
print(result)

# আউটপুট:
# [{'name': 'Karim', 'age': 30, 'city': 'Chittagong'}, {'name': 'Aziz', 'age': 35, 'city': 'Dhaka'}]

ডেটা মুছে ফেলা (Remove)

remove মেথড দিয়ে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা মুছে ফেলা যায়।

db.remove(User.age < 30)  # বয়স ৩০ এর কম এমন ডেটা মুছে ফেলা
print(db.all())

# আউটপুট:
# [{'name': 'Aziz', 'age': 35, 'city': 'Dhaka'}]

সারাংশ

TinyDB এর Query এবং Data Filtering পদ্ধতি সহজ এবং কার্যকর। এটি ডেটা অনুসন্ধান, শর্তযুক্ত ফিল্টারিং এবং ডেটা ম্যানিপুলেশনে Pythonic এবং সরল পদ্ধতি ব্যবহার করে, যা ছোট এবং মাঝারি প্রজেক্টে কার্যকর সমাধান প্রদান করে।

Content added By

TinyDB-তে Query হলো ডেটাবেস থেকে ডেটা অনুসন্ধান, ফিল্টার, আপডেট বা মুছে ফেলার একটি শক্তিশালী পদ্ধতি। এটি নির্দিষ্ট শর্ত (conditions) অনুযায়ী ডেটা খুঁজে বের করার জন্য ব্যবহার করা হয়। Query TinyDB-র একটি গুরুত্বপূর্ণ উপাদান, যা ব্যবহারকারীদের ডেটাবেস পরিচালনা করতে সহজ করে তোলে।


Query কীভাবে কাজ করে?

  • Query Object: TinyDB-তে একটি Query Object তৈরি করতে হয়, যা শর্ত অনুযায়ী ডেটা ফিল্টার করে।
  • শর্তাবলী: শর্তাবলী (conditions) তৈরি করার জন্য তুলনামূলক অপারেটর যেমন ==, !=, <, >, ইত্যাদি ব্যবহার করা হয়।
  • ডেটা অনুসন্ধান: Query Object ব্যবহার করে ডেটা পড়া, আপডেট করা এবং মুছে ফেলা সম্ভব।

Query Object তৈরি

TinyDB-তে Query Object তৈরি করার জন্য Query ক্লাস ব্যবহার করা হয়।

from tinydb import Query

User = Query()

উপরের কোডে User হলো একটি Query Object, যা ডেটা ফিল্টার করার জন্য ব্যবহৃত হবে।


Query এর মাধ্যমে ডেটা অনুসন্ধান

search() পদ্ধতি ব্যবহার করে ডেটা অনুসন্ধান করা যায়। উদাহরণস্বরূপ:

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# ডেটা যোগ করা
db.insert({'name': 'Aziz', 'age': 25, 'city': 'Dhaka'})
db.insert({'name': 'Mehedi', 'age': 22, 'city': 'Chittagong'})

# Query Object তৈরি
User = Query()

# নাম অনুসারে ডেটা অনুসন্ধান
result = db.search(User.name == 'Aziz')
print(result)

আউটপুট:

[{'name': 'Aziz', 'age': 25, 'city': 'Dhaka'}]

Query এর মাধ্যমে ডেটা আপডেট

update() পদ্ধতি ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা আপডেট করা যায়।

db.update({'age': 26}, User.name == 'Aziz')

উপরের উদাহরণে, যেসব ডকুমেন্টে name ফিল্ডের মান 'Aziz' আছে, সেগুলোর age ফিল্ড আপডেট করে 26 করা হবে।


Query এর মাধ্যমে ডেটা মুছে ফেলা

remove() পদ্ধতি ব্যবহার করে ডেটা মুছে ফেলা যায়।

db.remove(User.city == 'Chittagong')

উপরের উদাহরণে, যেসব ডকুমেন্টে city ফিল্ডের মান 'Chittagong' আছে, সেগুলো ডাটাবেস থেকে মুছে ফেলা হবে।


Query এর মাধ্যমে শর্তাবলী (Conditions)

TinyDB-তে নিম্নলিখিত অপারেটর ব্যবহার করে শর্ত নির্ধারণ করা যায়:

অপারেটরউদ্দেশ্যউদাহরণ
==সমানUser.name == 'Aziz'
!=সমান নয়User.age != 30
<ছোটUser.age < 25
>বড়User.age > 25
<=ছোট বা সমানUser.age <= 25
>=বড় বা সমানUser.age >= 25
existsফিল্ডটি উপস্থিত কিনাUser.city.exists()
matchesপ্যাটার্ন ম্যাচ করে কিনাUser.name.matches(r'^A.*')

উদাহরণ: জটিল শর্ত ব্যবহার

TinyDB-তে একাধিক শর্ত যোগ করার জন্য logical operators (&, |, ~) ব্যবহার করা যায়।

# নাম 'Aziz' এবং শহর 'Dhaka' হলে
result = db.search((User.name == 'Aziz') & (User.city == 'Dhaka'))

# বয়স ২০ বছরের বেশি বা শহর 'Chittagong' হলে
result = db.search((User.age > 20) | (User.city == 'Chittagong'))

# শহর 'Dhaka' না হলে
result = db.search(~(User.city == 'Dhaka'))

সারাংশ

  • Query TinyDB-তে ডেটা ফিল্টার এবং পরিচালনার জন্য ব্যবহৃত একটি পদ্ধতি।
  • এটি search(), update(), এবং remove() এর মাধ্যমে ডেটা পরিচালনা করে।
  • শর্তাবলী নির্ধারণের জন্য বিভিন্ন অপারেটর এবং লজিক্যাল কন্ডিশন ব্যবহার করা যায়।
  • Query এর সাহায্যে ছোট থেকে মাঝারি আকারের ডেটাবেস সহজেই ম্যানেজ করা সম্ভব।

TinyDB-তে Query ডেটা পরিচালনাকে সহজ, কার্যকর এবং দ্রুততর করে তোলে।

Content added By

TinyDB-তে ডেটা Fetch করার জন্য Query ক্লাস ব্যবহার করা হয়। এটি ডেটাবেস থেকে নির্দিষ্ট ক্রাইটেরিয়া অনুযায়ী ডেটা অনুসন্ধান এবং রিট্রাইভ করার একটি কার্যকর উপায় প্রদান করে।


Query তৈরি করা

Query ক্লাস ব্যবহার করে ডেটাবেসে বিভিন্ন শর্ত (conditions) তৈরি করা যায়। এটি Pythonic Syntax ব্যবহার করে ডেটা অনুসন্ধান এবং ফিল্টারিং সহজ করে।

উদাহরণ:

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
db.insert({'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'})

ডেটা Fetch করা

১. নির্দিষ্ট শর্ত অনুযায়ী ডেটা অনুসন্ধান (search)

search পদ্ধতি ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা Fetch করা যায়।

# Query ক্লাস থেকে শর্ত তৈরি
User = Query()

# 'name' এর মান 'Rahim' এমন ডেটা Fetch করা
result = db.search(User.name == 'Rahim')
print(result)

# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

২. একটি নির্দিষ্ট ডেটা রেকর্ড Fetch করা (get)

get পদ্ধতি ব্যবহার করে শুধুমাত্র একটি নির্দিষ্ট রেকর্ড Fetch করা যায়।

# 'city' এর মান 'Sylhet' এমন একটি রেকর্ড Fetch করা
record = db.get(User.city == 'Sylhet')
print(record)

# আউটপুট:
# {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}

৩. সব ডেটা Fetch করা (all)

all পদ্ধতি ব্যবহার করে ডাটাবেসে থাকা সব ডেটা দেখা যায়।

# সব ডেটা Fetch করা
all_data = db.all()
print(all_data)

# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
#  {'name': 'Karim', 'age': 25, 'city': 'Chittagong'},
#  {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}]

শর্ত অনুযায়ী ডেটা Fetch করার উদাহরণ

১. তুলনা অপারেটর ব্যবহার

# 'age' ২৫ এর বেশি এমন ডেটা Fetch করা
result = db.search(User.age > 25)
print(result)

# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

২. একাধিক শর্ত ব্যবহার

# 'age' ২৫ এবং 'city' 'Chittagong' এমন ডেটা Fetch করা
result = db.search((User.age == 25) & (User.city == 'Chittagong'))
print(result)

# আউটপুট:
# [{'name': 'Karim', 'age': 25, 'city': 'Chittagong'}]

৩. শর্ত নেগেট করা

# 'city' এর মান 'Dhaka' নয় এমন ডেটা Fetch করা
result = db.search(~(User.city == 'Dhaka'))
print(result)

# আউটপুট:
# [{'name': 'Karim', 'age': 25, 'city': 'Chittagong'},
#  {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}]

Query এর সাথে Function ব্যবহার

কাস্টম শর্ত ব্যবহার

test পদ্ধতি ব্যবহার করে কাস্টম ফাংশন দিয়ে শর্ত নির্ধারণ করা যায়।

# এমন ডেটা Fetch করা যেখানে 'age' ২৫ এর চেয়ে বেশি
result = db.search(User.age.test(lambda x: x > 25))
print(result)

# আউটপুট:
# [{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

সারাংশ

TinyDB-তে Query এবং শর্ত ব্যবহার করে ডেটা Fetch করা সহজ এবং কার্যকর। আপনি নির্দিষ্ট মান, তুলনা অপারেটর, এবং কাস্টম ফাংশন ব্যবহার করে ডেটা অনুসন্ধান করতে পারেন। এভাবে ডেটা ম্যানেজমেন্ট খুবই দ্রুত এবং সরল পদ্ধতিতে সম্পন্ন করা যায়।

Content added By

TinyDB-তে ডেটা অনুসন্ধানের সময় AND, OR, এবং NOT শর্ত ব্যবহার করে ডেটা ফিল্টার করা সম্ভব। এটি Query ক্লাসের মাধ্যমে পরিচালিত হয়, যা সহজ এবং সরল উপায়ে জটিল ফিল্টারিং পরিচালনা করে।


AND শর্ত ব্যবহার

AND শর্ত ব্যবহার করে একাধিক শর্ত মিলে গেলে ডেটা রিটার্ন করা হয়।

উদাহরণ:

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি
db = TinyDB('db.json')

# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
db.insert({'name': 'Rahim', 'age': 40, 'city': 'Sylhet'})

# ডেটা অনুসন্ধান (AND শর্ত)
User = Query()
result = db.search((User.name == 'Rahim') & (User.city == 'Dhaka'))
print(result)

আউটপুট:

[{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

OR শর্ত ব্যবহার

OR শর্ত ব্যবহার করে একটি শর্ত পূরণ হলেই ডেটা রিটার্ন করা হয়।

উদাহরণ:

# ডেটা অনুসন্ধান (OR শর্ত)
result = db.search((User.name == 'Rahim') | (User.city == 'Chittagong'))
print(result)

আউটপুট:

[
  {'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
  {'name': 'Karim', 'age': 25, 'city': 'Chittagong'},
  {'name': 'Rahim', 'age': 40, 'city': 'Sylhet'}
]

NOT শর্ত ব্যবহার

NOT শর্ত ব্যবহার করে শর্ত পূরণ না করা ডেটা রিটার্ন করা হয়।

উদাহরণ:

# ডেটা অনুসন্ধান (NOT শর্ত)
result = db.search(~(User.city == 'Dhaka'))
print(result)

আউটপুট:

[
  {'name': 'Karim', 'age': 25, 'city': 'Chittagong'},
  {'name': 'Rahim', 'age': 40, 'city': 'Sylhet'}
]

একাধিক শর্তের কম্বিনেশন

AND, OR, এবং NOT একসাথে ব্যবহার করা সম্ভব।

উদাহরণ:

# ডেটা অনুসন্ধান (কম্বিনেশন শর্ত)
result = db.search((User.age > 20) & ((User.city == 'Dhaka') | ~(User.name == 'Karim')))
print(result)

আউটপুট:

[
  {'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
  {'name': 'Rahim', 'age': 40, 'city': 'Sylhet'}
]

সারাংশ

TinyDB-তে AND, OR, এবং NOT শর্ত ব্যবহার করে সহজে ডেটা ফিল্টার করা যায়। এটি জটিল অনুসন্ধান কার্যক্রম সহজ করে এবং ছোট স্কেল অ্যাপ্লিকেশনের জন্য কার্যকর ডেটা ম্যানেজমেন্ট সিস্টেম প্রদান করে।

Content added By

TinyDB-তে Complex Query তৈরি এবং ব্যবহার করা খুবই সহজ এবং শক্তিশালী। এটি Query মডিউল ব্যবহার করে ডেটা ফিল্টারিং এবং অনুসন্ধানের জন্য বিভিন্ন শর্ত তৈরি করতে দেয়। একাধিক শর্ত সংযুক্ত করে আরও জটিল অনুসন্ধান সম্ভব।


Complex Query এর ধারণা

TinyDB-তে Complex Query লেখার সময় আপনি Query Object এবং Logical Operators (যেমন: and, or, not) ব্যবহার করতে পারেন।

Query Object:
TinyDB-তে Query মডিউল ব্যবহার করে ডেটার নির্দিষ্ট ক্ষেত্রের উপর শর্ত তৈরি করা হয়।

Logical Operators:

  • & (AND): দুটি বা তার বেশি শর্ত একসঙ্গে পূরণ করতে হবে।
  • | (OR): যেকোনো একটি শর্ত পূরণ করতে হবে।
  • ~ (NOT): একটি শর্তের বিপরীতে ডেটা ফিল্টার করে।

Complex Query লেখার উদাহরণ

উদাহরণ ১: একাধিক শর্তযুক্ত অনুসন্ধান (AND এবং OR)

from tinydb import TinyDB, Query

# ডাটাবেস তৈরি
db = TinyDB('data.json')

# ডেটা যোগ করা
db.insert({'name': 'Rahim', 'age': 30, 'city': 'Dhaka'})
db.insert({'name': 'Karim', 'age': 25, 'city': 'Chittagong'})
db.insert({'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'})

# Query তৈরি
User = Query()

# শর্ত: বয়স ২৫ বা তার বেশি এবং শহর 'Dhaka'
result = db.search((User.age >= 25) & (User.city == 'Dhaka'))

print(result)

উৎপাদন:

[{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

উদাহরণ ২: OR অপারেটর ব্যবহার

# শর্ত: শহর 'Dhaka' অথবা 'Sylhet'
result = db.search((User.city == 'Dhaka') | (User.city == 'Sylhet'))

print(result)

উৎপাদন:

[
    {'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
    {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}
]

উদাহরণ ৩: NOT অপারেটর ব্যবহার

# শর্ত: শহর 'Chittagong' নয়
result = db.search(~(User.city == 'Chittagong'))

print(result)

উৎপাদন:

[
    {'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
    {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}
]

অন্যান্য Complex Query ব্যবহার

উদাহরণ ৪: একাধিক ফিল্ডের শর্ত

# শর্ত: নাম 'Mehedi' এবং বয়স ২০ থেকে ২৫ এর মধ্যে
result = db.search((User.name == 'Mehedi') & (User.age >= 20) & (User.age <= 25))

print(result)

উদাহরণ ৫: একটি নির্দিষ্ট ভ্যালুর উপস্থিতি পরীক্ষা

# শর্ত: শহরের নাম তালিকায় আছে কিনা
result = db.search(User.city.one_of(['Dhaka', 'Sylhet']))

print(result)

উৎপাদন:

[
    {'name': 'Rahim', 'age': 30, 'city': 'Dhaka'},
    {'name': 'Mehedi', 'age': 22, 'city': 'Sylhet'}
]

উদাহরণ ৬: Regex ব্যবহার করে অনুসন্ধান

# শর্ত: নাম 'R' দিয়ে শুরু হয়েছে
import re
result = db.search(User.name.matches(r'^R'))

print(result)

উৎপাদন:

[{'name': 'Rahim', 'age': 30, 'city': 'Dhaka'}]

Complex Query ব্যবহারের সুবিধা

  1. শক্তিশালী ফিল্টারিং: একাধিক শর্ত একত্রিত করে নির্দিষ্ট ডেটা অনুসন্ধান করা সহজ।
  2. Dynamic Querying: ডেটার উপর ভিত্তি করে শর্ত পরিবর্তন করা যায়।
  3. সহজ ইন্টিগ্রেশন: পাইথনের Query মডিউল ব্যবহার করে Query গুলো অত্যন্ত সহজে লেখা যায়।
  4. উচ্চ পারফরম্যান্স: ইনডেক্সিংয়ের মাধ্যমে দ্রুত অনুসন্ধান সম্ভব।

সারাংশ

TinyDB-তে Complex Query ব্যবহার করে ডেটার উপর নির্দিষ্ট শর্ত প্রয়োগ করা সম্ভব। Logical Operators (and, or, not) এবং Query মডিউলের সাহায্যে ডেটা ফিল্টার করা যায়, যা এটি ছোট ডেটাবেস ম্যানেজমেন্টের জন্য কার্যকর এবং সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...