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?)
āĻŦ্āϝাāĻĒাāϰ | SQLite | sqlite3 |
āĻāĻা āĻী? | āĻāĻāĻা āĻĄেāĻাāĻŦেāĻāĻ āĻāĻ্āĻিāύ | Python-āĻ SQLite āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰাāϰ āϞাāĻāĻŦ্āϰেāϰি/āĻŽāĻĄিāĻāϞ |
āĻে āϤৈāϰি āĻāϰেāĻে? | D. Richard Hipp | Python āĻিāĻŽ |
āĻāϞাāĻĻা āĻāϰে āĻāύāϏ্āĻāϞ āĻāϰāϤে āĻšā§? | āĻš্āϝাঁ, āϝāĻĻি āϤুāĻŽি Python āĻাā§া āĻ āύ্āϝ āĻাā§āĻাā§ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো | āύা, Python-āĻ āĻāĻা built-in |
āĻŦ্āϝāĻŦāĻšাāϰ āĻšā§ āĻোāĻĨাā§? | Android āĻ ্āϝাāĻĒ, āĻোāĻ āϏ্āĻেāϞ āĻ ্āϝাāĻĒ, embedded systems | Python āĻĒ্āϰāĻেāĻ্āĻে āĻĄেāĻাāĻŦেāĻāĻ āϏংāĻ্āϰাāύ্āϤ āĻাāĻেāϰ āĻāύ্āϝ |
đ āϏংāĻ্āώেāĻĒে:
- 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() | āϰিāϏোāϰ্āϏ āĻĢ্āϰি āĻāϰা |