برنامه نویسی

آموزش کار با SQLite در پایتون

آموزش کار با SQLite در پایتون

13 دقیقه زمان برای خواندن این مطلب نیاز است.

فهرست مطالب

SQLite یکی از محبوب‌ترین پایگاه‌های داده سبک و داخلی در دنیای برنامه‌نویسی است که به دلیل سرعت بالا، سادگی و عدم نیاز به نصب سرور، در بسیاری از پروژه‌های نرم‌افزاری مورد استفاده قرار می‌گیرد. اگر قصد دارید برنامه‌های دسکتاپ، ابزارهای مدیریت داده، پروژه‌های تحلیل اطلاعات یا حتی اپلیکیشن‌های کوچک و متوسط را توسعه دهید، یادگیری آموزش کار با SQLite در پایتون یک مهارت بسیار ارزشمند خواهد بود.

پایتون به‌صورت پیش‌فرض از SQLite پشتیبانی می‌کند و همین موضوع باعث شده استفاده از این دیتابیس برای توسعه‌دهندگان بسیار آسان باشد. در این مقاله به‌صورت کاملاً تخصصی و پروژه‌محور، تمامی مباحث مربوط به آموزش کار با SQLite در پایتون را بررسی خواهیم کرد.


SQLite چیست؟

SQLite یک سیستم مدیریت پایگاه داده رابطه‌ای سبک (Relational Database Management System) است که بدون نیاز به سرور اجرا می‌شود. برخلاف MySQL یا PostgreSQL که نیاز به نصب و راه‌اندازی سرویس دارند، SQLite تنها یک فایل ساده روی سیستم ایجاد می‌کند و تمامی اطلاعات داخل همان فایل ذخیره می‌شود.

ویژگی مهم SQLite این است که:

  • بسیار سبک است
  • سرعت بالایی دارد
  • رایگان و متن‌باز است
  • برای پروژه‌های کوچک و متوسط عالی عمل می‌کند
  • در پایتون به‌صورت داخلی پشتیبانی می‌شود

به همین دلیل آموزش کار با SQLite در پایتون برای بسیاری از برنامه‌نویسان تازه‌کار و حرفه‌ای اهمیت زیادی دارد.

معرفی زبان برنامه نویسی اسکرچ


چرا SQLite در پایتون محبوب است؟

دلایل محبوبیت SQLite در پایتون شامل موارد زیر است:

عدم نیاز به نصب جداگانه

پایتون دارای ماژول داخلی sqlite3 است و بدون نصب کتابخانه اضافی می‌توانید با دیتابیس کار کنید.

سرعت مناسب

برای پروژه‌های سبک، SQLite عملکرد بسیار خوبی ارائه می‌دهد.

مناسب برای پروژه‌های آموزشی

اگر در حال یادگیری پایگاه داده هستید، SQLite بهترین گزینه برای شروع است.

مناسب برای اپلیکیشن‌های آفلاین

بسیاری از نرم‌افزارهای دسکتاپ از SQLite استفاده می‌کنند.

سادگی استفاده

کار کردن با SQLite در پایتون بسیار ساده و قابل فهم است.

آموزش کار با SQLite در پایتون

آموزش ساخت اسلایدر با جاوااسکریپت


ماژول sqlite3 در پایتون

برای آموزش کار با SQLite در پایتون باید با ماژول sqlite3 آشنا شوید. این ماژول به‌صورت پیش‌فرض در پایتون وجود دارد.

برای استفاده کافی است:

import sqlite3

ایجاد دیتابیس SQLite در پایتون

اولین قدم در آموزش کار با SQLite در پایتون ساخت دیتابیس است.

import sqlite3

connection = sqlite3.connect("database.db")

در اینجا:

  • اگر فایل database.db وجود نداشته باشد ساخته می‌شود
  • اگر وجود داشته باشد به آن متصل می‌شویم

نحوه اتصال دامنه ایران به هاست خارج


ایجاد جدول در SQLite

پس از ساخت دیتابیس باید جدول ایجاد کنیم.

import sqlite3

connection = sqlite3.connect("database.db")

cursor = connection.cursor()

cursor.execute("""
CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
)
""")

connection.commit()
connection.close()

توضیح کامل کد بالا

در آموزش کار با SQLite در پایتون باید هر بخش را به‌خوبی درک کنید.

connection

اتصال به دیتابیس را مدیریت می‌کند.

cursor

برای اجرای دستورات SQL استفاده می‌شود.

execute

دستور SQL را اجرا می‌کند.

commit

تغییرات را ذخیره می‌کند.

close

اتصال را می‌بندد.

برنامه نویسی ربات معامله گر ارز دیجیتال


انواع داده در SQLite

SQLite دارای انواع داده ساده‌ای است:

نوع دادهتوضیح
INTEGERاعداد صحیح
REALاعداد اعشاری
TEXTمتن
BLOBفایل و داده باینری
NULLمقدار خالی

افزودن اطلاعات به جدول

یکی از مهم‌ترین بخش‌های آموزش کار با SQLite در پایتون افزودن داده است.

import sqlite3

connection = sqlite3.connect("database.db")

cursor = connection.cursor()

cursor.execute("""
INSERT INTO users (name, age)
VALUES ('Ali', 25)
""")

connection.commit()

connection.close()

درج چند داده همزمان

users = [
    ('Sara', 22),
    ('Reza', 30),
    ('Mina', 27)
]

cursor.executemany("""
INSERT INTO users (name, age)
VALUES (?, ?)
""", users)

چرا باید از علامت سوال استفاده کنیم؟

در آموزش کار با SQLite در پایتون باید امنیت را جدی بگیرید.

استفاده از Placeholder باعث جلوگیری از SQL Injection می‌شود.

نمونه صحیح:

cursor.execute(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    ('Ali', 25)
)

خواندن اطلاعات از دیتابیس

برای دریافت داده‌ها از SELECT استفاده می‌کنیم.

cursor.execute("SELECT * FROM users")

rows = cursor.fetchall()

for row in rows:
    print(row)

متدهای دریافت داده

fetchone()

یک ردیف برمی‌گرداند.

cursor.fetchone()

fetchmany()

تعداد مشخصی ردیف برمی‌گرداند.

cursor.fetchmany(5)

fetchall()

تمام داده‌ها را برمی‌گرداند.

cursor.fetchall()

جستجو در دیتابیس

cursor.execute(
    "SELECT * FROM users WHERE age > ?",
    (24,)
)

result = cursor.fetchall()

print(result)

بروزرسانی اطلاعات

در آموزش کار با SQLite در پایتون باید Update را کامل یاد بگیرید.

cursor.execute("""
UPDATE users
SET age = ?
WHERE name = ?
""", (35, 'Ali'))

connection.commit()

حذف اطلاعات

cursor.execute("""
DELETE FROM users
WHERE name = ?
""", ('Ali',))

connection.commit()

حذف کامل جدول

cursor.execute("DROP TABLE users")

شرط IF NOT EXISTS در ساخت جدول

برای جلوگیری از خطا:

cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
)
""")

استفاده از PRIMARY KEY

کلید اصلی برای شناسایی یکتا استفاده می‌شود.

id INTEGER PRIMARY KEY

AUTOINCREMENT در SQLite

id INTEGER PRIMARY KEY AUTOINCREMENT

این ویژگی باعث افزایش خودکار شناسه می‌شود.


مرتب‌سازی داده‌ها

cursor.execute("""
SELECT * FROM users
ORDER BY age DESC
""")

محدود کردن نتایج

cursor.execute("""
SELECT * FROM users
LIMIT 5
""")

استفاده از شرط LIKE

cursor.execute("""
SELECT * FROM users
WHERE name LIKE 'A%'
""")

اتصال به دیتابیس در پروژه‌های واقعی

در پروژه‌های حرفه‌ای بهتر است تابع اتصال ایجاد کنید.

import sqlite3

def connect_db():
    return sqlite3.connect("database.db")

مدیریت خطاها در SQLite

یکی از مهم‌ترین بخش‌های آموزش کار با SQLite در پایتون مدیریت Exception است.

import sqlite3

try:
    connection = sqlite3.connect("database.db")
    print("اتصال برقرار شد")

except sqlite3.Error as error:
    print("خطا:", error)

finally:
    if connection:
        connection.close()

استفاده از Context Manager

روش حرفه‌ای‌تر:

import sqlite3

with sqlite3.connect("database.db") as connection:
    cursor = connection.cursor()

    cursor.execute("SELECT * FROM users")

ساخت پروژه مدیریت کاربران

اکنون یک پروژه واقعی ایجاد می‌کنیم.

ساخت جدول

import sqlite3

connection = sqlite3.connect("users.db")

cursor = connection.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS users(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT,
    email TEXT
)
""")

connection.commit()

افزودن کاربر

def add_user(username, email):

    connection = sqlite3.connect("users.db")

    cursor = connection.cursor()

    cursor.execute("""
    INSERT INTO users(username, email)
    VALUES(?, ?)
    """, (username, email))

    connection.commit()

    connection.close()

نمایش کاربران

def show_users():

    connection = sqlite3.connect("users.db")

    cursor = connection.cursor()

    cursor.execute("SELECT * FROM users")

    users = cursor.fetchall()

    for user in users:
        print(user)

    connection.close()

حذف کاربر

def delete_user(user_id):

    connection = sqlite3.connect("users.db")

    cursor = connection.cursor()

    cursor.execute("""
    DELETE FROM users
    WHERE id = ?
    """, (user_id,))

    connection.commit()

    connection.close()

بروزرسانی اطلاعات کاربر

def update_user(user_id, username):

    connection = sqlite3.connect("users.db")

    cursor = connection.cursor()

    cursor.execute("""
    UPDATE users
    SET username = ?
    WHERE id = ?
    """, (username, user_id))

    connection.commit()

    connection.close()

مزایای SQLite

در مسیر آموزش کار با SQLite در پایتون باید مزایا را بدانید.

سبک بودن

SQLite حجم بسیار کمی دارد.

بدون سرور

نیاز به نصب سرویس جداگانه نیست.

سرعت بالا

برای پروژه‌های سبک عملکرد عالی دارد.

سادگی

راه‌اندازی و استفاده آسان است.

قابل حمل بودن

کل دیتابیس فقط یک فایل است.

افزونه های ضروری وردپرس برای برنامه نویسان


معایب SQLite

مناسب نبودن برای پروژه‌های بسیار بزرگ

اگر تعداد کاربران بسیار زیاد باشد بهتر است از PostgreSQL یا MySQL استفاده کنید.

محدودیت در همزمانی

SQLite برای تعداد زیاد عملیات همزمان مناسب نیست.


تفاوت SQLite و MySQL

ویژگیSQLiteMySQL
نیاز به سرورندارددارد
سرعت راه‌اندازیبسیار سریعمتوسط
مناسب پروژه بزرگکمتربله
نصبسادهپیچیده‌تر
حجمکمبیشتر

استفاده از SQLite در Flask

SQLite در فریمورک Flask بسیار محبوب است.

نمونه اتصال:

from flask import Flask
import sqlite3

app = Flask(__name__)

def get_db():
    conn = sqlite3.connect("database.db")
    return conn

استفاده از SQLite در Django

Django به‌صورت پیش‌فرض از SQLite استفاده می‌کند.

در فایل settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

نکات امنیتی مهم

در آموزش کار با SQLite در پایتون امنیت اهمیت زیادی دارد.

هرگز Query را مستقیم نسازید

اشتباه:

query = f"SELECT * FROM users WHERE name = '{name}'"

درست:

cursor.execute(
    "SELECT * FROM users WHERE name = ?",
    (name,)
)

گرفتن بکاپ از SQLite

چون دیتابیس فقط یک فایل است، کافی است فایل را کپی کنید.

import shutil

shutil.copy("database.db", "backup.db")

استفاده از توابع Aggregate

COUNT

cursor.execute("SELECT COUNT(*) FROM users")

AVG

cursor.execute("SELECT AVG(age) FROM users")

MAX

cursor.execute("SELECT MAX(age) FROM users")

استفاده از شرط BETWEEN

cursor.execute("""
SELECT * FROM users
WHERE age BETWEEN 20 AND 30
""")

استفاده از IN

cursor.execute("""
SELECT * FROM users
WHERE age IN (20, 25, 30)
""")

کار با تاریخ در SQLite

SQLite نوع تاریخ اختصاصی ندارد اما می‌توان تاریخ را به‌صورت TEXT ذخیره کرد.

cursor.execute("""
CREATE TABLE posts(
    id INTEGER PRIMARY KEY,
    title TEXT,
    created_at TEXT
)
""")

ذخیره تاریخ فعلی

from datetime import datetime

date = datetime.now()

cursor.execute("""
INSERT INTO posts(title, created_at)
VALUES(?, ?)
""", ("Post", str(date)))

استفاده از JOIN در SQLite

اگر چند جدول داشته باشید:

cursor.execute("""
SELECT orders.id, users.name
FROM orders
JOIN users
ON orders.user_id = users.id
""")

ساخت سیستم ثبت سفارش

جدول کاربران

CREATE TABLE users(
    id INTEGER PRIMARY KEY,
    name TEXT
)

جدول سفارش‌ها

CREATE TABLE orders(
    id INTEGER PRIMARY KEY,
    user_id INTEGER,
    product TEXT
)

بهینه‌سازی SQLite

برای عملکرد بهتر:

استفاده از Index

CREATE INDEX idx_name
ON users(name)

بستن اتصال

همیشه اتصال را ببندید.

استفاده از Queryهای بهینه

از SELECT * بی‌دلیل استفاده نکنید.


بهترین روش ساختار پروژه

project/
│
├── database/
│   ├── connection.py
│   ├── queries.py
│
├── main.py

فایل connection.py

import sqlite3

def connect():
    return sqlite3.connect("database.db")

فایل queries.py

from connection import connect

def get_users():

    conn = connect()

    cursor = conn.cursor()

    cursor.execute("SELECT * FROM users")

    result = cursor.fetchall()

    conn.close()

    return result

استفاده از Row Factory

برای دریافت دیکشنری:

connection.row_factory = sqlite3.Row

نمونه:

for row in rows:
    print(row["name"])

تراکنش در SQLite

try:

    connection.execute("BEGIN")

    cursor.execute(query1)

    cursor.execute(query2)

    connection.commit()

except:

    connection.rollback()

چرا آموزش کار با SQLite در پایتون مهم است؟

یادگیری SQLite در پایتون مزایای زیادی دارد:

  • ورود سریع به دنیای دیتابیس
  • مناسب برای پروژه‌های واقعی
  • کاربردی در وب و دسکتاپ
  • پایه مناسب برای یادگیری SQL
  • استفاده در پروژه‌های هوش مصنوعی و تحلیل داده
آموزش کار با SQLite در پایتون

تفاوت TCP و HTTP


استفاده از SQLite در پروژه‌های هوش مصنوعی

بسیاری از پروژه‌های Machine Learning برای ذخیره داده از SQLite استفاده می‌کنند.

نمونه:

cursor.execute("""
CREATE TABLE predictions(
    id INTEGER PRIMARY KEY,
    result TEXT
)
""")

ساخت سیستم لاگ

cursor.execute("""
CREATE TABLE logs(
    id INTEGER PRIMARY KEY,
    message TEXT,
    created_at TEXT
)
""")

ذخیره لاگ

cursor.execute("""
INSERT INTO logs(message, created_at)
VALUES(?, ?)
""", ("Application started", "2025-01-01"))

نکات مهم برای حرفه‌ای شدن

اگر می‌خواهید در آموزش کار با SQLite در پایتون حرفه‌ای شوید:

  • SQL را عمیق یاد بگیرید
  • پروژه واقعی بسازید
  • امنیت Queryها را رعایت کنید
  • با JOIN و Index کار کنید
  • معماری پروژه را اصولی طراحی کنید

آموزش برنامه نویسی مقدماتی


اشتباهات رایج در کار با SQLite

فراموش کردن commit

اگر commit نکنید اطلاعات ذخیره نمی‌شوند.

بستن نکردن اتصال

باعث مصرف منابع می‌شود.

استفاده مستقیم از ورودی کاربر

خطر SQL Injection ایجاد می‌کند.

طراحی ضعیف جداول

ساختار نادرست باعث کندی پروژه می‌شود.

کلاس های آنلاین برنامه نویسی معتبر


پروژه کامل مدیریت کتابخانه

ساخت جدول کتاب‌ها

import sqlite3

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

cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS books(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    author TEXT,
    year INTEGER
)
""")

conn.commit()

افزودن کتاب

def add_book(title, author, year):

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

    cursor = conn.cursor()

    cursor.execute("""
    INSERT INTO books(title, author, year)
    VALUES(?, ?, ?)
    """, (title, author, year))

    conn.commit()

    conn.close()

نمایش کتاب‌ها

def show_books():

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

    cursor = conn.cursor()

    cursor.execute("SELECT * FROM books")

    books = cursor.fetchall()

    for book in books:
        print(book)

    conn.close()

جستجوی کتاب

def search_book(title):

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

    cursor = conn.cursor()

    cursor.execute("""
    SELECT * FROM books
    WHERE title LIKE ?
    """, ('%' + title + '%',))

    result = cursor.fetchall()

    conn.close()

    return result

حذف کتاب

def delete_book(book_id):

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

    cursor = conn.cursor()

    cursor.execute("""
    DELETE FROM books
    WHERE id = ?
    """, (book_id,))

    conn.commit()

    conn.close()

بروزرسانی کتاب

def update_book(book_id, title):

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

    cursor = conn.cursor()

    cursor.execute("""
    UPDATE books
    SET title = ?
    WHERE id = ?
    """, (title, book_id))

    conn.commit()

    conn.close()

آینده SQLite

SQLite همچنان یکی از محبوب‌ترین دیتابیس‌های جهان است. بسیاری از مرورگرها، موبایل‌ها، نرم‌افزارها و اپلیکیشن‌ها از آن استفاده می‌کنند.

یادگیری آموزش کار با SQLite در پایتون می‌تواند مسیر ورود شما به توسعه نرم‌افزار و برنامه‌نویسی بک‌اند را بسیار ساده‌تر کند.

Dockerfile نمونه برای Node.js


جمع‌بندی

در این مقاله به‌صورت کامل و تخصصی آموزش کار با SQLite در پایتون را بررسی کردیم. یاد گرفتیم چگونه:

  • دیتابیس بسازیم
  • جدول ایجاد کنیم
  • داده ذخیره کنیم
  • اطلاعات را جستجو کنیم
  • داده‌ها را حذف و بروزرسانی کنیم
  • پروژه واقعی طراحی کنیم
  • امنیت و بهینه‌سازی را رعایت کنیم

SQLite یکی از بهترین انتخاب‌ها برای شروع یادگیری پایگاه داده در پایتون است. اگر به‌دنبال توسعه سریع، ساده و حرفه‌ای پروژه‌های پایتونی هستید، SQLite می‌تواند یک گزینه عالی برای شما باشد.

آموزش کار با SQLite در پایتون

کدنویسی تمیز در جاوا


سوالات متداول (FAQ)

SQLite چیست؟

SQLite یک پایگاه داده سبک و بدون سرور است که اطلاعات را داخل یک فایل ذخیره می‌کند.


آیا SQLite برای پروژه‌های واقعی مناسب است؟

بله، برای پروژه‌های کوچک و متوسط بسیار مناسب است.


آیا SQLite در پایتون نیاز به نصب دارد؟

خیر، ماژول sqlite3 به‌صورت پیش‌فرض در پایتون وجود دارد.


تفاوت SQLite و MySQL چیست؟

SQLite بدون سرور و سبک‌تر است اما MySQL برای پروژه‌های بزرگ مناسب‌تر می‌باشد.


آیا SQLite امن است؟

بله، اگر از Queryهای پارامتری استفاده کنید امنیت بالایی خواهد داشت.


آیا می‌توان از SQLite در Flask و Django استفاده کرد؟

بله، هر دو فریمورک از SQLite پشتیبانی می‌کنند.


بهترین روش جلوگیری از SQL Injection چیست؟

استفاده از Placeholder و Queryهای پارامتری.


آیا SQLite سریع است؟

برای پروژه‌های سبک و متوسط سرعت بسیار خوبی دارد.


آیا SQLite از JOIN پشتیبانی می‌کند؟

بله، SQLite از JOIN و بسیاری از قابلیت‌های SQL پشتیبانی می‌کند.


چگونه در پایتون به SQLite متصل شویم؟

با استفاده از ماژول sqlite3:

import sqlite3

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

دیدگاهتان را بنویسید