آموزش کار با SQLite در پایتون
13 دقیقه زمان برای خواندن این مطلب نیاز است.
فهرست مطالب
- SQLite چیست؟
- چرا SQLite در پایتون محبوب است؟
- ماژول sqlite3 در پایتون
- ایجاد دیتابیس SQLite در پایتون
- ایجاد جدول در SQLite
- توضیح کامل کد بالا
- انواع داده در SQLite
- افزودن اطلاعات به جدول
- درج چند داده همزمان
- چرا باید از علامت سوال استفاده کنیم؟
- خواندن اطلاعات از دیتابیس
- متدهای دریافت داده
- جستجو در دیتابیس
- بروزرسانی اطلاعات
- حذف اطلاعات
- حذف کامل جدول
- شرط IF NOT EXISTS در ساخت جدول
- استفاده از PRIMARY KEY
- AUTOINCREMENT در SQLite
- مرتبسازی دادهها
- محدود کردن نتایج
- استفاده از شرط LIKE
- اتصال به دیتابیس در پروژههای واقعی
- مدیریت خطاها در SQLite
- استفاده از Context Manager
- ساخت پروژه مدیریت کاربران
- افزودن کاربر
- نمایش کاربران
- حذف کاربر
- بروزرسانی اطلاعات کاربر
- مزایای SQLite
- معایب SQLite
- تفاوت SQLite و MySQL
- استفاده از SQLite در Flask
- استفاده از SQLite در Django
- نکات امنیتی مهم
- گرفتن بکاپ از SQLite
- استفاده از توابع Aggregate
- استفاده از شرط BETWEEN
- استفاده از IN
- کار با تاریخ در SQLite
- ذخیره تاریخ فعلی
- استفاده از JOIN در SQLite
- ساخت سیستم ثبت سفارش
- بهینهسازی SQLite
- بهترین روش ساختار پروژه
- فایل connection.py
- فایل queries.py
- استفاده از Row Factory
- تراکنش در SQLite
- چرا آموزش کار با SQLite در پایتون مهم است؟
- استفاده از SQLite در پروژههای هوش مصنوعی
- ساخت سیستم لاگ
- ذخیره لاگ
- نکات مهم برای حرفهای شدن
- اشتباهات رایج در کار با SQLite
- پروژه کامل مدیریت کتابخانه
- افزودن کتاب
- نمایش کتابها
- جستجوی کتاب
- حذف کتاب
- بروزرسانی کتاب
- آینده SQLite
- جمعبندی
- سوالات متداول (FAQ)
- SQLite چیست؟
- آیا SQLite برای پروژههای واقعی مناسب است؟
- آیا SQLite در پایتون نیاز به نصب دارد؟
- تفاوت SQLite و MySQL چیست؟
- آیا SQLite امن است؟
- آیا میتوان از SQLite در Flask و Django استفاده کرد؟
- بهترین روش جلوگیری از SQL Injection چیست؟
- آیا SQLite سریع است؟
- آیا SQLite از JOIN پشتیبانی میکند؟
- چگونه در پایتون به SQLite متصل شویم؟
SQLite یکی از محبوبترین پایگاههای داده سبک و داخلی در دنیای برنامهنویسی است که به دلیل سرعت بالا، سادگی و عدم نیاز به نصب سرور، در بسیاری از پروژههای نرمافزاری مورد استفاده قرار میگیرد. اگر قصد دارید برنامههای دسکتاپ، ابزارهای مدیریت داده، پروژههای تحلیل اطلاعات یا حتی اپلیکیشنهای کوچک و متوسط را توسعه دهید، یادگیری آموزش کار با SQLite در پایتون یک مهارت بسیار ارزشمند خواهد بود.
پایتون بهصورت پیشفرض از SQLite پشتیبانی میکند و همین موضوع باعث شده استفاده از این دیتابیس برای توسعهدهندگان بسیار آسان باشد. در این مقاله بهصورت کاملاً تخصصی و پروژهمحور، تمامی مباحث مربوط به آموزش کار با SQLite در پایتون را بررسی خواهیم کرد.
SQLite چیست؟
SQLite یک سیستم مدیریت پایگاه داده رابطهای سبک (Relational Database Management System) است که بدون نیاز به سرور اجرا میشود. برخلاف MySQL یا PostgreSQL که نیاز به نصب و راهاندازی سرویس دارند، SQLite تنها یک فایل ساده روی سیستم ایجاد میکند و تمامی اطلاعات داخل همان فایل ذخیره میشود.
ویژگی مهم SQLite این است که:
- بسیار سبک است
- سرعت بالایی دارد
- رایگان و متنباز است
- برای پروژههای کوچک و متوسط عالی عمل میکند
- در پایتون بهصورت داخلی پشتیبانی میشود
به همین دلیل آموزش کار با SQLite در پایتون برای بسیاری از برنامهنویسان تازهکار و حرفهای اهمیت زیادی دارد.
چرا SQLite در پایتون محبوب است؟
دلایل محبوبیت SQLite در پایتون شامل موارد زیر است:
عدم نیاز به نصب جداگانه
پایتون دارای ماژول داخلی sqlite3 است و بدون نصب کتابخانه اضافی میتوانید با دیتابیس کار کنید.
سرعت مناسب
برای پروژههای سبک، 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
| ویژگی | SQLite | MySQL |
|---|---|---|
| نیاز به سرور | ندارد | دارد |
| سرعت راهاندازی | بسیار سریع | متوسط |
| مناسب پروژه بزرگ | کمتر | بله |
| نصب | ساده | پیچیدهتر |
| حجم | کم | بیشتر |
استفاده از 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 در پروژههای هوش مصنوعی
بسیاری از پروژههای 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 در پایتون میتواند مسیر ورود شما به توسعه نرمافزار و برنامهنویسی بکاند را بسیار سادهتر کند.
جمعبندی
در این مقاله بهصورت کامل و تخصصی آموزش کار با 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")