{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "96ba3639",
   "metadata": {},
   "source": [
    "# 22-23 · Подключение к SQLite через sqlite3\n",
    "\n",
    "Практика к разделу [«SQLite: встраиваемая реляционная СУБД»](../../site/chapters/glava-22/22-23-sqlite.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb34a534",
   "metadata": {},
   "source": [
    "## Цель\n",
    "\n",
    "Использовать row_factory для обращения к столбцам по имени и убедиться, что sqlite3.Row ведёт себя как строка результата."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3411dc1",
   "metadata": {},
   "source": [
    "## Рабочий пример"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e899ba0b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sqlite3\n",
    "\n",
    "baza = sqlite3.connect(\":memory:\")\n",
    "baza.row_factory = sqlite3.Row\n",
    "baza.execute(\"CREATE TABLE tasks (id INTEGER PRIMARY KEY, title TEXT NOT NULL, done INTEGER NOT NULL DEFAULT 0)\")\n",
    "baza.execute(\"INSERT INTO tasks (title, done) VALUES (?, ?)\", (\"Полить цветы\", 1))\n",
    "baza.commit()\n",
    "\n",
    "stroka = baza.execute(\"SELECT id, title, done FROM tasks\").fetchone()\n",
    "print(\"По имени:\", stroka[\"title\"], stroka[\"done\"])\n",
    "print(\"По индексу:\", stroka[0], stroka[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3907705a",
   "metadata": {},
   "source": [
    "## Проверка результата"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f2556042",
   "metadata": {},
   "outputs": [],
   "source": [
    "assert stroka[\"title\"] == \"Полить цветы\"\n",
    "assert stroka[\"done\"] == 1\n",
    "assert stroka[1] == stroka[\"title\"]\n",
    "print(\"Верно: sqlite3.Row доступен и по имени столбца, и по числовому индексу.\")"
   ]
  }
 ],
 "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
}
