Database Tutorials SQLAlchemy এর মূল ধারণা গাইড ও নোট

378

SQLAlchemy হলো একটি শক্তিশালী এবং নমনীয় Python লাইব্রেরি, যা ডেটাবেস পরিচালনা এবং Object Relational Mapping (ORM) এর জন্য ব্যবহৃত হয়। এটি ডেটাবেসের সাথে কাজ করার জন্য একটি উন্মুক্ত এবং স্কেলেবল প্ল্যাটফর্ম সরবরাহ করে, যা SQL কিউরিগুলোর জন্য সরাসরি এবং অবজেক্ট-ওরিয়েন্টেড পদ্ধতির সমর্থন দেয়। SQLAlchemy মূলত দুটি অংশে বিভক্ত:

  • SQLAlchemy Core
  • SQLAlchemy ORM

এই দুইটি অংশের মধ্যে পার্থক্য এবং তাদের কিভাবে ব্যবহার করতে হবে, সেটি বোঝার জন্য SQLAlchemy-এর মূল ধারণা জানতে হবে।


SQLAlchemy Core

SQLAlchemy Core হল SQLAlchemy এর নিম্ন স্তরের অংশ, যা সরাসরি SQL স্টেটমেন্ট পরিচালনা করে। এটি ডেটাবেস টেবিল এবং কলামগুলোর জন্য ম্যানুয়ালি কাঠামো তৈরি করতে সাহায্য করে এবং কাস্টম SQL কিউরিগুলোর মাধ্যমে ডেটাবেস অপারেশন সম্পন্ন করতে সক্ষম।

Core এর মূল বৈশিষ্ট্য:

  • SQL Expression Language: Core SQL স্টেটমেন্ট লেখার জন্য SQLAlchemy একটি Expression Language প্রদান করে। এটি ডেটাবেসের সাথে যোগাযোগ করতে কাস্টম SQL স্টেটমেন্ট তৈরি করতে সহায়ক।
  • Database Abstraction: Core আপনাকে বিভিন্ন ডেটাবেসের সাথে কাজ করার জন্য একযোগভাবে একটি সাধারণ ইন্টারফেস প্রদান করে, যা ডেটাবেসকে অ্যাবস্ট্রাক্ট করে রাখে।

SQLAlchemy ORM

SQLAlchemy ORM (Object Relational Mapping) হল একটি উচ্চ স্তরের পদ্ধতি যা ডেটাবেসের টেবিলগুলিকে Python ক্লাসের সাথে সম্পর্কিত করে এবং তাদের অবজেক্টের মাধ্যমে ডেটা ম্যানিপুলেশন সম্ভব করে তোলে।

ORM এর মূল বৈশিষ্ট্য:

  • Object Mapping: SQLAlchemy ORM ডেটাবেস টেবিলগুলিকে Python অবজেক্টের সাথে ম্যাপ করে, যার ফলে আপনি SQL কিউরি লেখার পরিবর্তে Python কোড ব্যবহার করে ডেটাবেসের সাথে কাজ করতে পারেন।
  • Declarative Mapping: ORM-এ Declarative ব্যবহার করে ডেটাবেস টেবিল এবং তাদের সম্পর্ক সহজে মডেল করা যায়।
  • Session Management: ORM সেশন পরিচালনার মাধ্যমে ডেটাবেসের সাথে অবজেক্ট ম্যানিপুলেশন সহজ করে। আপনি Session তৈরি করে ডেটাবেসে Create, Read, Update এবং Delete (CRUD) অপারেশন করতে পারেন।

SQLAlchemy এর মূল সুবিধা

  • ডেটাবেস স্বাধীনতা: SQLAlchemy ডেটাবেস ইঞ্জিনের সঙ্গে কাজ করার জন্য একটি সাধারণ API সরবরাহ করে, যা বিভিন্ন ডেটাবেস (MySQL, PostgreSQL, SQLite ইত্যাদি) এর মধ্যে পার্থক্য হ্রাস করে।
  • টেবিল ও সম্পর্ক মডেলিং: SQLAlchemy ORM ডেটাবেস টেবিল এবং সম্পর্ক (One-to-One, One-to-Many, Many-to-Many) সহজে মডেল করতে সাহায্য করে।
  • বিল্ট-ইন সুরক্ষা: ORM ইনজেকশন রোধে সহায়ক এবং SQL Injection এর মত সিকিউরিটি সমস্যা থেকে রক্ষা করে।
  • কাস্টম কিউরি ও এক্সপ্রেশন: Core ব্যবহার করে কাস্টম SQL কিউরি এবং এক্সপ্রেশন তৈরি করা সম্ভব, যা ডেটাবেস অপারেশনগুলোকে আরও লचीলা এবং শক্তিশালী করে তোলে।

সারাংশ

SQLAlchemy মূলত দুটি প্রধান অংশে বিভক্ত—Core এবং ORM, যা ডেটাবেসের সাথে যোগাযোগ এবং ডেটা ম্যানিপুলেশন সহজ করে তোলে। Core সরাসরি SQL স্টেটমেন্ট ব্যবহারের জন্য উপযোগী, যেখানে ORM অবজেক্ট-ওরিয়েন্টেড পদ্ধতির মাধ্যমে ডেটাবেসের সাথে কাজ করতে সাহায্য করে। SQLAlchemy এর মূল ধারণা হলো ডেটাবেসকে Python কোডের সাথে শক্তিশালীভাবে সংযুক্ত করা, যা ডেভেলপারদের জন্য কাজকে অনেক সহজ এবং দ্রুত করে তোলে।

Content added By

Engine এবং Connection এর ধারণা

306

SQLAlchemy তে Engine এবং Connection দুটি গুরুত্বপূর্ণ উপাদান, যা ডেটাবেসের সাথে যোগাযোগ স্থাপন এবং অপারেশন পরিচালনা করতে ব্যবহৃত হয়। এগুলোর মূল ভূমিকা বুঝতে পারলে আপনি SQLAlchemy এর মাধ্যমে ডেটাবেসের সাথে কার্যকরভাবে কাজ করতে পারবেন।


Engine

Engine হল SQLAlchemy এর একটি প্রধান উপাদান যা ডেটাবেসের সাথে সংযোগ স্থাপন করে এবং SQL স্টেটমেন্টগুলি কার্যকর করতে ব্যবহৃত হয়। এটি ডেটাবেস সেশনের জন্য সুরক্ষিত কানেকশন পুল তৈরি করে এবং ডেটাবেসে বিভিন্ন কার্যক্রমের জন্য একটি কেন্দ্রীয় ইন্টারফেস প্রদান করে।

Engine এর বৈশিষ্ট্য:

  • ডেটাবেস সংযোগ: Engine ডেটাবেসের সাথে সংযোগ স্থাপন এবং সংরক্ষণ করতে ব্যবহৃত হয়। এটি ডেটাবেস কনফিগারেশন ও অপারেশন পরিচালনা করতে সাহায্য করে।
  • Connection Pooling: SQLAlchemy নিজেই ডেটাবেস সংযোগগুলোর একটি পুল তৈরি করে, যা একই সংযোগ পুনরায় ব্যবহার করতে সাহায্য করে, ফলে কর্মক্ষমতা বাড়ে এবং সংযোগ ব্যবস্থাপনা সহজ হয়।
  • ট্রানজেকশন ম্যানেজমেন্ট: Engine ডেটাবেসে ট্রানজেকশন পরিচালনা করতে সহায়ক হয়। এটি সংযোগ এবং ট্রানজেকশন পরিচালনার জন্য প্রয়োজনীয় সরঞ্জাম সরবরাহ করে।
  • ডেটাবেসের মধ্যে একাধিক সেশন পরিচালনা: একাধিক ডেটাবেস সেশন তৈরি এবং পরিচালনা করতে সক্ষম।

উদাহরণ:

from sqlalchemy import create_engine

# MySQL ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('mysql+pymysql://username:password@localhost/mydatabase')

# ডেটাবেসের সাথে সংযোগ স্থাপন
connection = engine.connect()
print("Database connected successfully!")

# সংযোগ বন্ধ করা
connection.close()

এখানে engine হল ডেটাবেসের সাথে সংযোগ স্থাপনের কেন্দ্রীয় পয়েন্ট এবং create_engine ফাংশনটি ডেটাবেসের সংযোগ স্ট্রিং থেকে ইঞ্জিন তৈরি করে।


Connection

Connection হলো SQLAlchemy তে একটি অবজেক্ট, যা একটি একক ডেটাবেস সংযোগ প্রতিনিধিত্ব করে। এটি SQLAlchemy এর ইঞ্জিনের মাধ্যমে ডেটাবেসের সাথে যোগাযোগ স্থাপন এবং SQL কমান্ডগুলি কার্যকর করতে ব্যবহৃত হয়। Connection অবজেক্টের মাধ্যমে আপনি ডেটাবেসে সোজাসুজি অপারেশন (যেমন, SQL কোয়েরি চালানো, ডেটা ইনসার্ট, আপডেট ইত্যাদি) করতে পারেন।

Connection এর বৈশিষ্ট্য:

  • SQL কমান্ড এক্সিকিউট করা: Connection অবজেক্টের মাধ্যমে আপনি SQL কমান্ড, যেমন SELECT, INSERT, UPDATE, DELETE ইত্যাদি চালাতে পারেন।
  • ট্রানজেকশন পরিচালনা: এটি ডেটাবেসে ট্রানজেকশন পরিচালনা করতে ব্যবহৃত হয় (যেমন, commit(), rollback())।
  • ডেটাবেসের মধ্যে একাধিক অপারেশন পরিচালনা: একাধিক SQL স্টেটমেন্ট একযোগে বা ধারাবাহিকভাবে কার্যকর করতে ব্যবহৃত হয়।

উদাহরণ:

from sqlalchemy import create_engine

# SQLite ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# ডেটাবেসের সাথে সংযোগ স্থাপন
connection = engine.connect()

# SQL কমান্ড চালানো
result = connection.execute("SELECT * FROM users")
for row in result:
    print(row)

# সংযোগ বন্ধ করা
connection.close()

এখানে connection অবজেক্টের মাধ্যমে SQL স্টেটমেন্ট চালানো হয়েছে এবং ফলাফলটি প্রিন্ট করা হয়েছে।


Engine এবং Connection এর মধ্যে পার্থক্য

বিষয়EngineConnection
কাজডেটাবেসের সাথে সংযোগ স্থাপন এবং সংরক্ষণডেটাবেসের সাথে একক সংযোগে SQL কমান্ড এক্সিকিউট করা
ব্যবহারএকটি ডেটাবেসের সাথে সংযোগের কেন্দ্রীয় পয়েন্টSQL কমান্ড কার্যকর এবং ডেটাবেস অপারেশন পরিচালনা
ট্রানজেকশনট্রানজেকশন ম্যানেজমেন্টের জন্য ব্যবহার করা হয়ট্রানজেকশন শুরু, কমিট এবং রোলব্যাক পরিচালনা
সংযোগের ধরণএকাধিক সংযোগ পরিচালনাএকক সংযোগের মাধ্যমে ডেটাবেস অপারেশন

সারাংশ

Engine এবং Connection SQLAlchemy এর গুরুত্বপূর্ণ উপাদান। Engine ডেটাবেসের সাথে সংযোগ স্থাপন করে এবং ডেটাবেসের সাথে একাধিক সেশন পরিচালনা করতে সহায়তা করে, যখন Connection একক ডেটাবেস সংযোগে SQL কমান্ড কার্যকর করে এবং ট্রানজেকশন পরিচালনা করতে ব্যবহৃত হয়। Engine ডেটাবেস ইন্টারফেসের কেন্দ্রীয় পয়েন্ট হিসেবে কাজ করে, আর Connection হচ্ছে ডেটাবেসের সাথে সরাসরি যোগাযোগের মাধ্যম।

Content added By

SQLAlchemy তে Session কী এবং এর ভূমিকা

313

Session SQLAlchemy ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ উপাদান, যা ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে যোগাযোগ স্থাপন এবং ম্যানিপুলেশন করে। এটি ডেটাবেসে Create, Read, Update, Delete (CRUD) অপারেশন পরিচালনার জন্য ব্যবহৃত হয় এবং Transaction Management এ সহায়ক ভূমিকা পালন করে।


Session এর ভূমিকা

  1. ডেটাবেসে অপারেশন পরিচালনা
    Session ডেটাবেসে ডেটা ইনসার্ট, আপডেট, মুছে ফেলা এবং অনুসন্ধান (ফেচিং) করতে ব্যবহৃত হয়। এটি SQLAlchemy ORM অবজেক্টগুলিকে ডেটাবেস টেবিলের রেকর্ডে রূপান্তরিত করে।
  2. ট্রানজেকশন ম্যানেজমেন্ট
    Session ডেটাবেসের ট্রানজেকশন পরিচালনা করতে সাহায্য করে। এটি ডেটাবেসে ট্রানজেকশন শুরু, কমিট এবং রোলব্যাক করতে ব্যবহৃত হয়।
  3. অবজেক্ট স্টেট ম্যানেজমেন্ট
    Session অবজেক্টের স্টেট (যেমন new, dirty, deleted, persistent) ট্র্যাক করে এবং এগুলোর ভিত্তিতে ডেটাবেসের সাথে সংশ্লিষ্ট কার্যক্রম পরিচালনা করে।
  4. Lazy Loading এবং Eager Loading
    Session ডেটাবেস থেকে সম্পর্কিত অবজেক্টগুলি লোড করার সময় Lazy Loading বা Eager Loading কৌশল ব্যবহার করতে পারে। এটি ডেটাবেসের কার্যক্ষমতা উন্নত করতে সাহায্য করে।
  5. ডেটাবেস রিড এবং রাইট অপারেশন
    Session কে ব্যবহার করে SQLAlchemy ORM অবজেক্টের মাধ্যমে ডেটা রিড এবং রাইট করা যায়। এটি SQL কিউরি ব্যবহারের চাইতে অধিক সুবিধাজনক এবং সহজতর পদ্ধতি।

Session তৈরি করা এবং ব্যবহার

SQLAlchemy তে Session তৈরি করতে sessionmaker ফাংশন ব্যবহার করা হয়, যা একটি Session ক্লাস তৈরি করে এবং ডেটাবেস সংযোগের সাথে যুক্ত করে। একবার Session তৈরি হলে, আপনি সেটি ব্যবহার করে ডেটাবেসের সাথে কার্যক্রম সম্পন্ন করতে পারেন।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ডেটাবেস ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()

# নতুন ইউজার তৈরি এবং সেভ করা
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()  # ডেটাবেসে পরিবর্তন সেভ

# ডেটা রিড করা
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# সংযোগ বন্ধ করা
session.close()

এই উদাহরণে, sessionmaker ব্যবহার করে একটি Session তৈরি করা হয়েছে, যা ডেটাবেসে নতুন ইউজার ইনসার্ট এবং ডেটা রিড করার কাজ করেছে।


Session এর মেথডসমূহ

SQLAlchemy তে Session এর মাধ্যমে ডেটাবেস অপারেশন করার জন্য বিভিন্ন মেথড সরবরাহ করা হয়:

  • add(): একটি অবজেক্ট সেশন দ্বারা ট্র্যাক করা শুরু করতে ব্যবহৃত হয়।
  • commit(): পরিবর্তনগুলো ডেটাবেসে সেভ (commit) করার জন্য ব্যবহৃত হয়।
  • rollback(): যদি কোন সমস্যা হয়, তবে সব পরিবর্তন ফিরিয়ে আনার জন্য ব্যবহৃত হয়।
  • close(): Session বন্ধ করে দেয়।
  • query(): ডেটাবেস থেকে ডেটা ফেচ (select) করার জন্য ব্যবহৃত হয়।

Session এবং Transaction

SQLAlchemy তে ট্রানজেকশন পরিচালনা করার জন্য Session ব্যবহৃত হয়। এটি একাধিক SQL অপারেশনকে একটি ট্রানজেকশনে বেঁধে রাখে এবং প্রয়োজনে পুরো ট্রানজেকশন রোলব্যাক বা কমিট করতে সহায়তা করে।

ট্রানজেকশন পরিচালনা:

# নতুন ইউজার তৈরি এবং সেভ করা
new_user = User(name="John", age=25)
session.add(new_user)

try:
    session.commit()  # ডেটাবেসে সেভ
except:
    session.rollback()  # কোনো সমস্যা হলে রোলব্যাক
    print("Transaction failed")
finally:
    session.close()  # সেশন বন্ধ

এখানে, যদি কোন ত্রুটি ঘটে, তবে session.rollback() এর মাধ্যমে সম্পূর্ণ ট্রানজেকশন রোলব্যাক করা হবে, এবং সেশন বন্ধ করার পরবর্তী ধাপ হবে session.close()


Session এর সম্পর্কিত কিছু গুরুত্বপূর্ণ ধারণা

  • Persistent Objects: যখন একটি অবজেক্ট Session তে থাকে এবং ডেটাবেসে তার সংশ্লিষ্ট রেকর্ডটি উপস্থিত থাকে, তখন এটি Persistent অবজেক্ট হিসেবে বিবেচিত হয়।
  • Dirty Objects: যখন একটি অবজেক্ট Session এ পরিবর্তিত হয়, তবে সেটি Dirty অবজেক্ট হিসেবে ট্র্যাক করা হয়।
  • New Objects: যখন একটি নতুন অবজেক্ট তৈরি করা হয় এবং সেশন দ্বারা ট্র্যাক করা হয়, তখন সেটি New অবজেক্ট হিসেবে বিবেচিত হয়।
  • Deleted Objects: যদি একটি অবজেক্টকে সেশন থেকে মুছে ফেলা হয়, তবে এটি Deleted অবজেক্ট হিসেবে বিবেচিত হয়।

Session ম্যানেজমেন্ট এবং পারফরম্যান্স

Session এর মাধ্যমে ডেটাবেসে কার্যক্রম সম্পন্ন করার সময় পারফরম্যান্সের জন্য কিছু কৌশল রয়েছে, যেমন:

  • Lazy Loading: ডেটাবেস থেকে শুধুমাত্র প্রয়োজনীয় তথ্যই লোড করা হয়।
  • Eager Loading: সম্পর্কিত ডেটা একবারে লোড করা হয়, যাতে পরবর্তীতে আবার ডেটাবেসে কল না করতে হয়।
  • Batch Processing: একাধিক অবজেক্ট একযোগে ডেটাবেসে সেভ করা যায়, যা পারফরম্যান্স বাড়ায়।

সারাংশ

SQLAlchemy তে Session একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান, যা ডেটাবেস অপারেশন পরিচালনা, ট্রানজেকশন ম্যানেজমেন্ট এবং অবজেক্ট স্টেট ট্র্যাকিং এর জন্য ব্যবহৃত হয়। এটি ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে কার্যকরভাবে কাজ করতে সহায়ক। Session এর মাধ্যমে CRUD অপারেশন, ট্রানজেকশন কমিট ও রোলব্যাক, এবং ডেটা লোডিং কৌশলগুলির ব্যবহার ডেটাবেস ম্যানিপুলেশনকে সহজ এবং দ্রুত করে তোলে।

Content added By

Metadata এবং Table অবজেক্ট

247

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 এই কাঠামো ব্যবহার করে ডেটাবেস টেবিল তৈরি, মডিফাই এবং পরিচালনা করার জন্য একটি শক্তিশালী পদ্ধতি সরবরাহ করে।

Content added By

SQLAlchemy এর মাধ্যমে ডাটাবেস সংযোগ

271

SQLAlchemy ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করার প্রক্রিয়া খুবই সহজ। এটি Engine এর মাধ্যমে ডেটাবেসের সাথে যোগাযোগ স্থাপন করে এবং Session এর মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করে। SQLAlchemy ডেটাবেসের সাথে সংযোগ স্থাপন করতে বিভিন্ন ড্রাইভার ব্যবহার করা হয়, যেমন MySQL, PostgreSQL, SQLite, ইত্যাদি।


ডেটাবেস সংযোগের জন্য Engine তৈরি করা

SQLAlchemy এর Engine হলো ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রধান উপাদান। এটি ডেটাবেসে SQL স্টেটমেন্ট পাঠাতে এবং ডেটাবেসের সাথে যোগাযোগ স্থাপন করতে ব্যবহৃত হয়।

এখানে SQLAlchemy Engine তৈরি করতে এবং ডেটাবেসে সংযোগ করতে একটি সাধারণ উদাহরণ দেওয়া হলো:

SQLite (বিল্ট-ইন ড্রাইভার)

from sqlalchemy import create_engine

# SQLite ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# ডেটাবেসের সাথে সংযোগ স্থাপন
connection = engine.connect()
print("Database connected successfully!")

# সংযোগ বন্ধ করা
connection.close()

এখানে, sqlite:///example.db একটি SQLite ডেটাবেস ফাইলের পথ। যদি এই ফাইলটি আগে না থাকে, SQLAlchemy এটি তৈরি করবে। echo=True সেট করলে SQLAlchemy ডেটাবেসের মধ্যে সমস্ত SQL কিউরি কনসোলে লগ করবে, যা ডিবাগিংয়ের জন্য সহায়ক।


MySQL সংযোগ

MySQL ডেটাবেসের সাথে সংযোগ করতে pymysql ড্রাইভার ব্যবহার করতে হয়। প্রথমে pymysql ড্রাইভার ইনস্টল করুন:

pip install pymysql

তারপর MySQL ডেটাবেসে সংযোগ স্থাপন করতে:

from sqlalchemy import create_engine

# MySQL ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('mysql+pymysql://username:password@localhost/mydatabase')

# ডেটাবেসের সাথে সংযোগ স্থাপন
connection = engine.connect()
print("MySQL Database connected successfully!")

# সংযোগ বন্ধ করা
connection.close()

এখানে username, password, localhost, এবং mydatabase আপনার ডেটাবেসের তথ্য অনুসারে পরিবর্তন করুন।


PostgreSQL সংযোগ

PostgreSQL ডেটাবেসের সাথে সংযোগ করতে psycopg2 ড্রাইভার ব্যবহার করতে হয়। প্রথমে psycopg2 ইনস্টল করুন:

pip install psycopg2

তারপর PostgreSQL ডেটাবেসে সংযোগ স্থাপন করতে:

from sqlalchemy import create_engine

# PostgreSQL ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('postgresql+psycopg2://username:password@localhost/mydatabase')

# ডেটাবেসের সাথে সংযোগ স্থাপন
connection = engine.connect()
print("PostgreSQL Database connected successfully!")

# সংযোগ বন্ধ করা
connection.close()

এখানে, username, password, localhost, এবং mydatabase আপনার ডেটাবেসের তথ্য অনুসারে পরিবর্তন করুন।


Connection Pooling

SQLAlchemy স্বয়ংক্রিয়ভাবে Connection Pooling প্রদান করে, যার মাধ্যমে একাধিক সংযোগ পুনরায় ব্যবহার করা সম্ভব। এটি পারফরম্যান্স বৃদ্ধি করে এবং ডেটাবেস সংযোগের জন্য অতিরিক্ত প্রক্রিয়া কমিয়ে আনে।

এখানে একটি সাধারণ Connection Pooling উদাহরণ:

from sqlalchemy import create_engine

# ইঞ্জিন তৈরি এবং connection pooling সক্রিয় করা
engine = create_engine('sqlite:///example.db', pool_size=5, max_overflow=10)

# ডেটাবেস সংযোগ এবং কমান্ড চালানো
connection = engine.connect()
print("Database connected with connection pooling!")

connection.close()

এখানে pool_size=5 মানে পাঁচটি সংযোগ একযোগে ব্যবহৃত হবে এবং max_overflow=10 মানে অতিরিক্ত ১০টি সংযোগ ওপেন করা যাবে, যদি প্রয়োজন হয়।


Session ব্যবহারের মাধ্যমে ডেটাবেসে অপারেশন

ডেটাবেসের সাথে অধিক কার্যক্রম করতে, যেমন ডেটা ইনসার্ট বা রিড, Session ব্যবহার করা হয়। Session অবজেক্ট ডেটাবেস অপারেশন পরিচালনার জন্য প্রয়োজনীয় সেবা প্রদান করে।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()

# ডেটাবেসে কিছু অপারেশন করা (যেমন, ইনসার্ট, রিড)
# session.add(), session.query(), session.commit() ইত্যাদি

session.close()

এখানে sessionmaker(bind=engine) ব্যবহার করে Session তৈরি করা হয়েছে এবং এটি ইঞ্জিনের সাথে সংযুক্ত।


সারাংশ

SQLAlchemy তে ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য Engine ব্যবহৃত হয়, যা ডেটাবেসের সাথে যোগাযোগ এবং SQL স্টেটমেন্ট এক্সিকিউট করতে ব্যবহৃত হয়। Session ব্যবহার করে আপনি ডেটাবেসে অপারেশন পরিচালনা করতে পারেন। SQLAlchemy বিভিন্ন ডেটাবেসের (MySQL, PostgreSQL, SQLite) সাথে কাজ করার জন্য ড্রাইভার ব্যবহার করে এবং ডেটাবেস সংযোগের জন্য Connection Pooling এর মতো উন্নত বৈশিষ্ট্য সরবরাহ করে, যা পারফরম্যান্স বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...