بانک اطلاعاتی (SQLite)
مروری بر بانک اطلاعاتی
- بانک اطلاعاتی (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()- بعد از اتمام کار با بانک اطلاعاتی، حتماً اتصال رو ببندین