← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 12: Проста база даних у файлі

Технологія: Python

Номер лабораторної: 12 · Рівень: middle

Тема: SQLite з стандартним модулем sqlite3

Повний опис / сценарій лабораторної:

Meta: навчитися працювати з вбудованою базою SQLite для невеликих сервісів і утиліт.



Krok 1. Створити файл src/app/db12.py.

Komandi: cd ~/python_lab1/src; touch app/db12.py



Krok 2. Додати код створення таблиці users.

Komанда: printf "import sqlite3
from pathlib import Path

DB_PATH = Path("lab12.db")

def init_db():
    conn = sqlite3.connect(DB_PATH)
    cur = conn.cursor()
    cur.execute("create table if not exists users(id integer primary key, name text, email text)")
    conn.commit()
    conn.close()

if __name__ == "__main__":
    init_db()
" > app/db12.py



Krok 3. Запустити скрипт і перевірити наявність файлу бази.

Komandi: export PYTHONPATH=$(pwd); python app/db12.py; ls lab12.db



Krok 4. Додати функцію insert_user.

Komanda: printf "import sqlite3
from pathlib import Path

DB_PATH = Path("lab12.db")

def init_db():
    conn = sqlite3.connect(DB_PATH)
    cur = conn.cursor()
    cur.execute("create table if not exists users(id integer primary key, name text, email text)")
    conn.commit()
    conn.close()

def insert_user(name: str, email: str):
    conn = sqlite3.connect(DB_PATH)
    cur = conn.cursor()
    cur.execute("insert into users(name, email) values(?, ?)", (name, email))
    conn.commit()
    conn.close()

if __name__ == "__main__":
    init_db()
    insert_user("Taras", "taras@example.com")
" > app/db12.py



Krok 5. Запустити оновлений скрипт.

Komанда: python app/db12.py



Krok 6. Додати функцію get_all_users.

Poyasnennya: використовуй fetchall і поверни список словників або кортежів.



Krok 7. Додати main який викликає init_db, insert_user кілька разів і друкує результат get_all_users.



Krok 8. Перевірити що записів не дублюються при повторному запуску, додавши просту перевірку.

Poyasnennya: можна очищати таблицю перед тестом.



Krok 9. Занотувати правила використання параметрів ? для захисту від SQL інʼєкцій.



Krok 10. Mini zvit.

Zavdannya: опиши сценарій де SQLite достатньо для прод рішення у твоїй практиці.