SQLAlchemy তে Metadata এবং Table দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা ডেটাবেস টেবিল এবং তাদের কাঠামো (schema) মডেলিং এবং পরিচালনা করতে ব্যবহৃত হয়। এই দুটি ধারণা SQLAlchemy এর Core অংশের সাথে সম্পর্কিত এবং ডেটাবেস টেবিল এবং তাদের কলামগুলোর জন্য কাঠামো তৈরি করার কাজে আসে।
Metadata
Metadata হলো SQLAlchemy তে একটি অবজেক্ট যা ডেটাবেসের স্কিমা বা কাঠামো সম্পর্কিত তথ্য ধারণ করে। এটি ডেটাবেসের টেবিল, কলাম, ইন্ডেক্স, কনস্ট্রেইন্ট, ডাটা টাইপস এবং অন্য কাঠামোগত বৈশিষ্ট্য সম্বন্ধে গুরুত্বপূর্ণ তথ্য সংরক্ষণ করে।
Metadata এর বৈশিষ্ট্য:
- ডেটাবেস স্কিমা সংরক্ষণ: Metadata সমস্ত টেবিলের কাঠামো এবং সম্পর্ক নিয়ে কাজ করে।
- টেবিল তৈরি ও মডিফিকেশন: SQLAlchemy টেবিল তৈরি বা মডিফাই করতে Metadata ব্যবহার করে।
- ডেটাবেসে সংযুক্তি: এটি টেবিল এবং তাদের মধ্যে সম্পর্ক ট্র্যাক করে এবং SQLAlchemy এর ORM এবং Core উভয়ের সাথে সংযোগ স্থাপন করে।
উদাহরণ:
from sqlalchemy import MetaData, Table, Column, Integer, String
# Metadata অবজেক্ট তৈরি
metadata = MetaData()
# টেবিল তৈরি
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer))
print(metadata.tables) # মেটাডেটার টেবিল তালিকা
এখানে, metadata হলো একটি MetaData অবজেক্ট, যা টেবিলের কাঠামো সংরক্ষণ করছে এবং পরে এটি ডেটাবেসে বাস্তবায়ন (create) বা মডিফাই করা যাবে।
Table অবজেক্ট
Table হলো SQLAlchemy তে একটি অবজেক্ট যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। এটি একটি টেবিলের নাম, কলাম, প্রাথমিক কী, বাইরের কী, ডেটা টাইপ এবং অন্যান্য কনস্ট্রেইন্টগুলোর সংজ্ঞা ধারণ করে।
Table অবজেক্টের বৈশিষ্ট্য:
- টেবিল কাঠামো:
Tableঅবজেক্টে টেবিলের নাম এবং কলামের তথ্য সংজ্ঞায়িত করা হয়। - কলাম সংজ্ঞা: প্রতিটি
Columnএকটি টেবিলের একটি ক্ষেত্রের জন্য নির্দেশ করে এবং এর ডেটা টাইপ এবং অন্যান্য বৈশিষ্ট্য সংজ্ঞায়িত করে। - কনস্ট্রেইন্ট: টেবিলের মধ্যে প্রাথমিক কী (Primary Key), বাইরের কী (Foreign Key), একক বা বহু কলামের জন্য ইউনিক কনস্ট্রেইন্ট (Unique Constraint) সংজ্ঞায়িত করা যায়।
উদাহরণ:
from sqlalchemy import Table, Column, Integer, String, MetaData
# Metadata অবজেক্ট তৈরি
metadata = MetaData()
# Table অবজেক্ট তৈরি
users_table = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer))
# টেবিলের কলামসমূহ দেখতে
print(users_table.columns)
এখানে, users_table একটি Table অবজেক্ট যা users টেবিলের কাঠামো (schema) ধারণ করছে, যার মধ্যে তিনটি কলাম: id, name, এবং age রয়েছে। id কলামটি primary_key=True সেট করা হয়েছে, যার মাধ্যমে এটি টেবিলের প্রাথমিক কী হিসেবে কাজ করবে।
Table এবং Metadata এর মধ্যে সম্পর্ক
- Metadata: এটি একটি container হিসেবে কাজ করে, যেখানে সমস্ত Table অবজেক্ট এবং অন্যান্য ডেটাবেস স্কিমা সম্পর্কিত তথ্য সংরক্ষিত থাকে।
- Table: এটি Metadata এর একটি অংশ এবং ডেটাবেস টেবিলের জন্য কাঠামো নির্ধারণ করে।
প্রতিটি টেবিলকে SQLAlchemy তে একটি Table অবজেক্ট হিসেবে সংজ্ঞায়িত করা হয়, এবং সেই টেবিলটি MetaData এর মাধ্যমে সংগঠিত হয়। ডেটাবেসের জন্য নতুন টেবিল তৈরি করার সময়, SQLAlchemy টেবিলের কাঠামো মেটাডেটার মাধ্যমে ডেটাবেসে প্রয়োগ করে।
Table এবং Metadata এর উদাহরণ
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
# Metadata অবজেক্ট তৈরি
metadata = MetaData()
# Table অবজেক্ট তৈরি
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer))
# SQLite ডেটাবেসে টেবিল তৈরি করা
engine = create_engine('sqlite:///example.db', echo=True)
metadata.create_all(engine)
এখানে, metadata একটি MetaData অবজেক্ট যা users টেবিলের কাঠামো সংরক্ষণ করে এবং metadata.create_all(engine) ব্যবহার করে SQLite ডেটাবেসে টেবিলটি তৈরি করা হয়।
সারাংশ
Metadata এবং Table SQLAlchemy তে ডেটাবেসের কাঠামো এবং টেবিল পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। Metadata একটি container হিসেবে কাজ করে, যেখানে সমস্ত টেবিল এবং তাদের কাঠামো সংরক্ষণ করা হয়। Table অবজেক্ট প্রতিটি টেবিলের কাঠামো সংজ্ঞায়িত করে এবং এটি Metadata এর মাধ্যমে ডেটাবেসে প্রয়োগ করা হয়। SQLAlchemy এই কাঠামো ব্যবহার করে ডেটাবেস টেবিল তৈরি, মডিফাই এবং পরিচালনা করার জন্য একটি শক্তিশালী পদ্ধতি সরবরাহ করে।
Read more