SQLite3 in Python Bangla Documentation

how to use sqlite databases with python, sqlite bangla tutorial, python sqlite3 in bangla
SQlite

SQlite

আমরা SQL শিখেছি। কিন্তু ব্যবহার করে দেখিনি, এসকিউএল ব্যবহার করে দেখতে হলে আমাদের একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেমের প্রয়োজন পরবে। আগেই বলেছি বেশ কিছু জনপ্রিয় ডেটাবেস ম্যানেজমেন্ট সিস্টেম রয়েছে, যেমন - MySQL, MongoDB, Oracle ইত্যাদি। তবে আমরা এতো বড় মাপের কোনো ডেটাবেস ম্যানেজমেন্ট সিস্টেম ব্যবহার করবো না। আমরা SQLite নামের একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম ব্যবহার করব, যেটি কিনা পাইথনের মধ্যে আগে থেকেই আছে। তাই নতুন করে আর কোনো কিছু ডাউনলোড করতে হবে না। তবে এর ডাউনসাইডও আছে, সেটি হলো এটি ছোট, তাই একে কোনো বড় প্রজেক্টে ব্যবহার করা যাবে না। শেখার খাতিরে আমরা SQLite শিখছি তবে, ছোট প্রজেক্ট গুলোতে ব্যবহার করব। কিন্তু বড় প্রজেক্টে অবশ্যই MySQL এর মতো বড় ডেটাবেস গুলো ব্যবহার করব।

SQL শিখতে এখানে ক্লিক করুন

🗂️ SQLite3 Setup in Python

Python-এ SQLite3 ব্যবহার করতে চাইলে আলাদা করে কিছু ইনস্টল করতে হয় না!

Python-এর সঙ্গে sqlite3 মডিউলটা built-in হিসেবে আগে থেকেই থাকে।

▶️ ব্যবহার করার নিয়ম:

import sqlite3

এই এক লাইনেই sqlite3 মডিউল ইমপোর্ট হয়ে যাবে। এরপর তুমি ডাটাবেইজ তৈরি করা, টেবিল বানানো, ডেটা ইনসার্ট করা সব কিছুই করতে পারবে।


🔍
SQLite vs sqlite3 (What's the difference?)

ব্যাপারSQLitesqlite3
এটা কী?একটা ডেটাবেইজ ইঞ্জিনPython-এ SQLite ব্যবহার করার লাইব্রেরি/মডিউল
কে তৈরি করেছে?D. Richard HippPython টিম
আলাদা করে ইনস্টল করতে হয়?হ্যাঁ, যদি তুমি Python ছাড়া অন্য জায়গায় ব্যবহার করোনা, Python-এ এটা built-in
ব্যবহার হয় কোথায়?Android অ্যাপ, ছোট স্কেল অ্যাপ, embedded systemsPython প্রজেক্টে ডেটাবেইজ সংক্রান্ত কাজের জন্য

📌 সংক্ষেপে:

  • SQLite → একটা সম্পূর্ণ ডেটাবেইজ সিস্টেম (যেটা ফাইল-ভিত্তিক)
  • sqlite3 → Python-এ এই সিস্টেমের সাথে কাজ করার জন্য ইন্টারফেস

🛠️ কিভাবে একটি নতুন SQLite ডেটাবেইজ তৈরি বা কানেক্ট করতে হয়?

▶️ ধাপ ১: মডিউল ইমপোর্ট করো

import sqlite3

▶️ ধাপ ২: ডেটাবেইজ ফাইল তৈরি বা কানেক্ট করো

conn = sqlite3.connect("students.db")

🔹 যদি students.db নামে কোনো ফাইল না থাকে, তাহলে এটা নতুন করে তৈরি হবে।

🔹 আর যদি ফাইল থাকে, তাহলে Python সেটাতে কানেক্ট করবে।

🎯 Cursor, Commit আর Close নিয়ে বিস্তারিত


🧠 1. Cursor কী?

cursor মানে হলো ডেটাবেইজের একজন worker বা একধরনের pointer, যেটা দিয়ে তুমি ডেটাবেইজে কমান্ড (যেমন CREATE, INSERT, SELECT ইত্যাদি) পাঠাও।

✅ কিভাবে তৈরি করবো?

import sqlite3

conn = sqlite3.connect("students.db")
cursor = conn.cursor()


🔹
cursor() মেথড কল করলেই একটা cursor অবজেক্ট তৈরি হয়, যেটা দিয়ে তুমি SQL স্টেটমেন্ট execute করতে পারবে।

▶️ উদাহরণ:

cursor.execute("CREATE TABLE IF NOT EXISTS students (id INTEGER, name TEXT)")

📝

বোঝার মতো করে বললে:

ডেটাবেইজে কোনো কাজ করতে গেলে,

cursor

হলো সেই মেসেঞ্জার যেটা ডেটাবেইজের দরজায় গিয়ে বলে, “এই কাজটা করে ফেলো ভাই!”

💾 2. commit() - কেন দরকার?

যখন তুমি ডেটাবেইজে কিছু পরিবর্তন করো (যেমন নতুন ডেটা ঢোকাও, আপডেট করো বা ডিলিট করো), তখন commit() দিয়ে সেই পরিবর্তনগুলো স্থায়ী করতে হয়।

✅ ব্যবহার:

conn.commit()


🧠
উদাহরণ ছাড়া বোঝা মুশকিল, তাই..

cursor.execute("INSERT INTO students VALUES (1, 'Zakaria')")
conn.commit()


🔸 যদি
commit() না করো, তাহলে Python রানটাইমে হয়তো ইনসার্ট হবে, কিন্তু ফাইলটা save হবে না—তুমি প্রোগ্রাম বন্ধ করলেই সব data উধাও!


🛑 3. close() - এটা কেন দরকার?

কাজ শেষ হলে ডেটাবেইজ কানেকশন বন্ধ করে দেওয়াটা ভালো অভ্যাস। এতে করে মেমোরি খরচ কমে, ডেটা সুরক্ষিত থাকে, আর future bugs থেকে বাঁচা যায়।

✅ ব্যবহার:

conn.close()

💡

হ্যাঁ, close() না করলেও কাজ চলতে পারে... কিন্তু এটা একটা bad habit।

তুমি যদি প্রো-লেভেলে যেতে চাও, তাহলে

close()

করা চাই-ই চাই।

🔁 এক নজরে Recap:

কাজকী করেকখন ব্যবহার করবো
cursor()SQL execute করতে দেয়যখনই ডেটাবেইজে কাজ শুরু করবো
commit()পরিবর্তন সেভ করেনতুন ডেটা insert, update বা delete করার পর
close()কানেকশন বন্ধ করেকাজ শেষ হওয়ার পর

🧠 SQLite3 দিয়ে Python-এ SQL Query (CREATE, INSERT, SELECT, UPDATE, DELETE) ও ডেটা রিড করা

🧱 CREATE TABLE – টেবিল বানানো

ডেটা রাখার জন্য টেবিল লাগবে। প্রতিটা টেবিলের কলাম (column) আর data type থাকতে হয়।
cursor.execute("""
CREATE TABLE IF NOT EXISTS students (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
)
""")

🧾 ব্যাখ্যা:

  • id: ইউনিক নম্বর (PRIMARY KEY)
  • name: নাম (TEXT), NOT NULL মানে খালি থাকা যাবে না
  • age: INTEGER টাইপ ডেটা

✍️ INSERT – নতুন ডেটা ঢোকানো

cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Afrin", 21))
conn.commit()

কীভাবে অনেক গুলো ডেটা একসাথে ইনশার্ট করা যায় তা গুগল সার্চ থেকে জেনে নিন।

⚠️ কেন commit() দরকার?

INSERT, UPDATE, DELETE – এইগুলা ডেটা পরিবর্তন করে, তাই commit() দিয়ে সেই পরিবর্তনটা স্থায়ী করতে হয়।

🔍 SELECT – ডেটা রিড করা / বের করা

এখন দেখা যাক কিভাবে টেবিল থেকে ডেটা বের করবো।
cursor.execute("SELECT * FROM students")
result = cursor.fetchall()

for row in result:
    print(row)

📌 ব্যাখ্যা:

  • SELECT *: সব কলাম রিড করো
  • fetchall(): সব রো (row) একসাথে এনে লিস্ট আকারে দেয়
  • row: প্রতিটা রো একটা tuple → যেমন (1, 'Afrin', 21)

🔁 Data Retrieve in Details: fetchone vs fetchall

এবার এখানে বেশি ব্যাখ্যা করবো কারণ এটাই সবচেয়ে বড় কনফিউশন।


🥇
fetchone() → একটি রো (row) রিটার্ন করে


cursor.execute("SELECT * FROM students")
row = cursor.fetchone()
print(row)

🔹 যদি ডেটা না থাকে, তাহলে None রিটার্ন করবে।

🔁 বারবার কল করলে, একটার পর একটা করে row রিড হবে।

উদাহরণ:

cursor.execute("SELECT * FROM students")
print(cursor.fetchone())  # প্রথম রো
print(cursor.fetchone())  # দ্বিতীয় রো


🥈
fetchall() → সব রো রিটার্ন করে (list of tuples)


cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()

for r in rows:
    print(f"নাম: {r[1]}, বয়স: {r[2]}")

🔸 ডেটা অনেক থাকলে, এটা বেটার। কিন্তু খুব বড় টেবিল হলে মেমোরি বেশি খায়।


🧠 কখন কোনটা ব্যবহার করবো?

কাজব্যবহার করো
শুধু একটা রো দরকারfetchone()
সব রো দরকারfetchall()
বড় টেবিল বা লুপে দরকারfetchmany(n) (অপশনাল)

এর থেকেও সুন্দর ভাবে ডেটা দেখা যায়, গুগল সার্চ করে উপায় গুলো জেনে নিন।

🛠️ UPDATE – ডেটা আপডেট করা

cursor.execute("UPDATE students SET age = ? WHERE name = ?", (22, "Afrin"))
conn.commit()

ব্যাখ্যা:

  • যেই name = "Afrin" আছে, তার age আমরা ২১ থেকে ২২ করেছি।

❌ DELETE – ডেটা ডিলিট করা

cursor.execute("DELETE FROM students WHERE name = ?", ("Afrin",))
conn.commit()


📌 আবার বলছি –
WHERE না দিলে সব ডেটা মুছে যাবে!


📤 Filtering & Searching Example:

cursor.execute("SELECT name FROM students WHERE age > 20")
names = cursor.fetchall()

for name in names:
    print(name[0])


🔸 এখানে
name[0] কারণ fetchall() এ প্রতিটা row টাপল হয়।


📚 Summary (Cheat Sheet Style)

কাজকোডব্যাখ্যা
টেবিল বানানোCREATE TABLEডেটা রাখার বক্স তৈরি
ডেটা ঢোকানোINSERT INTOনতুন ডেটা ইনপুট
ডেটা দেখাSELECTডেটা পড়া
পরিবর্তনUPDATEপুরাতন ডেটা চেঞ্জ
মুছে ফেলাDELETEডেটা ডিলিট
পড়াfetchone() / fetchall()এক রো / সব রো রিড
সেভcommit()ডেটা স্থায়ী
বন্ধclose()রিসোর্স ফ্রি করা

About the author

MD Zakaria Hossen
Hi! I am Zakaria. I am the founder of Kochu Programmer. I want to spread tech knowledge to everyone.

Post a Comment