{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c7f30f47",
   "metadata": {},
   "source": [
    "# 22-22 · CRUD na SQLite\n",
    "\n",
    "Praktyka do sekcji [„SQL: tworzyć, czytać i modyfikować dane”"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f45d4e03",
   "metadata": {},
   "source": [
    "## Cel\n",
    "\n",
    "Wykonaj wszystkie cztery operacje CRUD prawdziwymi SQL-zapytaniami przez moduł sqlite3 — bezpośrednio w tym notatniku, bez dodatkowej instalacji."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5dfa2039",
   "metadata": {},
   "source": [
    "## Sprawa robocza"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f19290df",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sqlite3\n",
    "\n",
    "baza = sqlite3.connect(\":memory:\")\n",
    "baza.execute(\"CREATE TABLE tasks (id INTEGER PRIMARY KEY, title TEXT NOT NULL, done INTEGER NOT NULL DEFAULT 0)\")\n",
    "\n",
    "baza.execute(\"INSERT INTO tasks (title) VALUES (?)\", (\"Купить хлеб\",))\n",
    "baza.execute(\"INSERT INTO tasks (title) VALUES (?)\", (\"Выучить SQL\",))\n",
    "baza.commit()\n",
    "\n",
    "stroki = baza.execute(\"SELECT id, title, done FROM tasks ORDER BY id\").fetchall()\n",
    "print(stroki)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a62cb3d2",
   "metadata": {},
   "source": [
    "## Sprawdzenie wyniku"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3cb5499d",
   "metadata": {},
   "outputs": [],
   "source": [
    "assert len(stroki) == 2\n",
    "assert stroki[0][1] == \"Купить хлеб\"\n",
    "assert stroki[1][1] == \"Выучить SQL\"\n",
    "assert stroki[0][2] == 0\n",
    "print(\"Верно: обе задачи добавлены (Create) и прочитаны (Read).\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "985cff9f",
   "metadata": {},
   "source": [
    "## Eksperyment jest Update i Delete"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bc9909cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "baza.execute(\"UPDATE tasks SET done = 1 WHERE title = ?\", (\"Купить хлеб\",))\n",
    "baza.execute(\"DELETE FROM tasks WHERE title = ?\", (\"Выучить SQL\",))\n",
    "baza.commit()\n",
    "\n",
    "posle = baza.execute(\"SELECT id, title, done FROM tasks\").fetchall()\n",
    "print(posle)\n",
    "\n",
    "assert len(posle) == 1\n",
    "assert posle[0][1] == \"Купить хлеб\"\n",
    "assert posle[0][2] == 1\n",
    "print(\"Верно: Update изменил done, Delete убрал вторую задачу.\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Cartesian Python 3.14",
   "language": "python",
   "name": "cartesian-python314"
  },
  "language_info": {
   "name": "python",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
