SQLAlchemy তে Table তৈরি এবং মডিফিকেশন একটি গুরুত্বপূর্ণ কাজ, যেখানে ডেটাবেসের কাঠামো সংজ্ঞায়িত করা হয় এবং ডেটাবেসে টেবিল তৈরি বা পরিবর্তন করা হয়। SQLAlchemy তে Table এবং Column অবজেক্ট ব্যবহার করে আপনি টেবিল তৈরি এবং মডিফাই করতে পারেন।
Table তৈরি
SQLAlchemy তে টেবিল তৈরি করার জন্য MetaData এবং Table অবজেক্ট ব্যবহার করা হয়। MetaData একটি কন্টেইনার হিসেবে কাজ করে, যা টেবিল এবং তাদের কাঠামো ধারণ করে। একটি টেবিল তৈরি করতে Table অবজেক্ট ব্যবহার করা হয়, যেখানে টেবিলের নাম এবং কলামগুলো সংজ্ঞায়িত করা হয়।
Table তৈরি করার উদাহরণ:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
# 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)
এখানে users টেবিলটি id, name, এবং age কলাম সহ তৈরি করা হয়েছে। metadata.create_all(engine) ব্যবহার করে টেবিলটি ডেটাবেসে তৈরি করা হয়েছে।
Table মডিফিকেশন
একবার টেবিল তৈরি হলে, SQLAlchemy সরাসরি Table অবজেক্টের মাধ্যমে টেবিলের কাঠামো পরিবর্তন (মডিফাই) করতে দেয় না। তবে, আপনি Alembic নামক একটি মাইগ্রেশন টুল ব্যবহার করে টেবিলের কাঠামো মডিফাই করতে পারেন।
যদিও সরাসরি ALTER TABLE স্টেটমেন্ট ব্যবহার করে SQLAlchemy টেবিল মডিফাই করা সম্ভব, তবে Alembic একটি জনপ্রিয় পদ্ধতি যা মাইগ্রেশন পদ্ধতি সহজ এবং সুসংগঠিত করে।
Alembic ব্যবহার করে টেবিল মডিফিকেশন
Alembic ইনস্টল করা: প্রথমে, Alembic ইনস্টল করতে হবে:
pip install alembicAlembic কনফিগারেশন তৈরি: Alembic কনফিগারেশন শুরু করতে নিচের কমান্ডটি চালান:
alembic init alembicমাইগ্রেশন স্ক্রিপ্ট তৈরি করা: যদি আপনার মডেল পরিবর্তন হয়, যেমন একটি নতুন কলাম যুক্ত করা, তাহলে Alembic মাইগ্রেশন স্ক্রিপ্ট তৈরি করতে হবে:
alembic revision --autogenerate -m "add new column to users"মাইগ্রেশন চালানো: মাইগ্রেশন স্ক্রিপ্ট চালানোর জন্য:
alembic upgrade head
এভাবে, Alembic ব্যবহার করে টেবিলের কাঠামো পরিবর্তন এবং ডেটাবেস মাইগ্রেশন পরিচালনা করা যায়।
Column পরিবর্তন
SQLAlchemy তে একবার টেবিল তৈরি হলে, সরাসরি Column মডিফাই করা সম্ভব নয়, তবে কলাম যুক্ত বা মুছে ফেলা যেতে পারে:
কলাম যুক্ত করা:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
# Metadata এবং Table অবজেক্ট তৈরি
metadata = MetaData()
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)
# কলাম যুক্ত করা
new_column = Column('email', String)
users.append_column(new_column)
# কলাম যোগ করার পর টেবিল মডিফাই করা
metadata.create_all(engine)
কলাম মুছে ফেলা:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
# Metadata এবং Table অবজেক্ট তৈরি
metadata = MetaData()
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)
# কলাম মুছে ফেলা (যেমন 'age' কলাম)
users.c.age.drop()
# টেবিল মডিফাই করা
metadata.create_all(engine)
Table মডিফিকেশনের সীমাবদ্ধতা
SQLAlchemy তে টেবিলের কাঠামো পরিবর্তন করার কিছু সীমাবদ্ধতা রয়েছে। মূলত, একবার টেবিল তৈরি হলে আপনি ডাইনামিকভাবে তা পরিবর্তন করতে পারবেন না, এবং সাধারণত Alembic মাইগ্রেশন ব্যবহার করা হয়। SQLAlchemy নিজে টেবিলের জন্য সম্পূর্ণ ALTER কার্যকলাপ সরাসরি সাপোর্ট করে না।
সারাংশ
SQLAlchemy তে Table তৈরি এবং মডিফিকেশন করার জন্য MetaData এবং Table অবজেক্ট ব্যবহার করা হয়। টেবিল তৈরি এবং কলাম সংজ্ঞায়িত করতে Table ব্যবহার করা হয় এবং টেবিলের কাঠামো সংরক্ষণ করার জন্য Metadata ব্যবহৃত হয়। সরাসরি টেবিল মডিফিকেশন SQLAlchemy তে সীমাবদ্ধ, তবে Alembic ব্যবহার করে ডেটাবেস মাইগ্রেশন পরিচালনা করা হয়, যা টেবিলের কাঠামো পরিবর্তন করতে সাহায্য করে।
Read more