بانک اطلاعاتی (SQLite)

اصلاح شده

2026-08-20

مروری بر بانک اطلاعاتی

  • بانک اطلاعاتی (Database) جایی برای ذخیره‌ی منظم و دائمی داده‌هاست — برخلاف متغیر یا فایل ساده، امکان جست‌وجو، فیلتر و مدیریت حجم بالای داده رو راحت‌تر می‌کنه
  • SQLite یک بانک اطلاعاتی سبک و فایل‌محوره — کل بانک توی یک فایل .db ذخیره می‌شه و نیازی به نصب سرور جداگانه نداره
  • پایتون از قبل ماژول sqlite3 رو داره — نیازی به نصب اضافه نیست

دستورات SQL

دستور کار
CREATE TABLE ساخت جدول جدید
INSERT INTO افزودن ردیف جدید
SELECT خواندن داده
UPDATE ویرایش داده
DELETE حذف داده
WHERE شرط روی ردیف‌ها

اتصال به بانک اطلاعاتی

import sqlite3

conn = sqlite3.connect('school.db')
  • اگه فایل school.db وجود نداشته باشه، خودش می‌سازتش
  • conn پل ارتباطی بین پایتون و فایل بانک اطلاعاتیه

ساخت cursor و اجرای دستور SQL

cursor = conn.cursor()
  • cursor همون چیزیه که دستورات SQL رو واقعاً اجرا می‌کنه
cursor.execute('''
    CREATE TABLE IF NOT EXISTS students (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        age INTEGER
    )
''')
conn.commit()
  • conn.commit() : تغییرات رو واقعاً روی فایل ذخیره می‌کنه — بدون این خط، تغییرات موقتی می‌مونن

درج اطلاعات

cursor.execute('INSERT INTO students (name, age) VALUES (?, ?)', ('Ali', 25))
conn.commit()
  • استفاده از ? به‌جای چسبوندن مستقیم مقادیر به رشته‌ی SQL، جلوی خطا و حملات SQL Injection رو می‌گیره

حذف و ویرایش اطلاعات

# ویرایش
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (26, 'Ali'))

# حذف
cursor.execute('DELETE FROM students WHERE name = ?', ('Ali',))

conn.commit()

خواندن اطلاعات با fetch

cursor.execute('SELECT * FROM students')

row = cursor.fetchone()   # فقط یک ردیف
print(row)
  • برای خواندن همه‌ی ردیف‌ها:
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()

for row in rows:
    print(row)
  • هر row یک tuple از مقادیر ستون‌هاست

بستن اتصال

conn.close()
  • بعد از اتمام کار با بانک اطلاعاتی، حتماً اتصال رو ببندین