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