Урок 82. MySQL. Транзакции

📁 Блок: Базы данных ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#from #import #if #not #print #try #except #as

⚡ Кратко: домашнее задание

  1. Создай базу notes_app_<group>_<name> и выбери её через USE.
  2. Создай таблицу notes с полями id, title, content.
  3. Вставь заметку, вызови commit() и выведи все заметки через DictCursor.

🏠 Домашнее задание из LMS

1

Создание базы

Напишите программу, которая:

  • создаёт базу данных notes_app_<your_group>_<your_full_name>;
  • выбирает эту базу через USE notes_app;
  • выводит сообщение о результате.

Пример вывода:

Database 'notes_app' created or already exists.
2

Добавление заметок

Продолжите предыдущую программу:

  • создайте таблицу notes с полями: id, title, content;
  • вставьте одну заметку в таблицу;
  • выполните commit() после вставки;
  • выведите все заметки используя DictCursor.

Пример вывода:

Note added: Shopping list

🛠️ Подготовка окружения

  1. Убедитесь, что установлен Python 3.
  2. Установите библиотеку PyMySQL:
    pip install pymysql
  3. Убедитесь, что у вас есть доступ к серверу MySQL с правами на создание баз и таблиц. Запишите параметры подключения:
    • host — адрес сервера;
    • user — имя пользователя;
    • password — пароль.
⚠️ Проверить по документации: в LMS в качестве примера используется база notes_app_<your_group>_<your_full_name>, но в задании также упоминается USE notes_app. Уточните у преподавателя точное имя базы, которое нужно использовать при сдаче домашнего задания.

📋 Пошаговое решение

Шаг 1. Создание базы данных

Файл: homework_notes_app.py

import pymysql

config = {
    "host": "ich-edit.edu.itcareerhub.de",
    "user": "ich1",
    "password": "ich1_password_ilovedbs",
}

try:
    with pymysql.connect(**config) as connection:
        with connection.cursor() as cursor:
            cursor.execute("CREATE DATABASE IF NOT EXISTS notes_app")
            cursor.execute("USE notes_app")
            print("Database 'notes_app' created or already exists.")
except pymysql.MySQLError as e:
    print("Database error:", e)

Шаг 2. Создание таблицы и вставка заметки

Дополняем программу созданием таблицы и вставкой данных:

import pymysql
from pymysql.cursors import DictCursor

config = {
    "host": "ich-edit.edu.itcareerhub.de",
    "user": "ich1",
    "password": "ich1_password_ilovedbs",
}

try:
    with pymysql.connect(**config, cursorclass=DictCursor) as connection:
        with connection.cursor() as cursor:
            cursor.execute("CREATE DATABASE IF NOT EXISTS notes_app")
            cursor.execute("USE notes_app")
            print("Database 'notes_app' created or already exists.")

            cursor.execute("""
                CREATE TABLE IF NOT EXISTS notes (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    title VARCHAR(200),
                    content TEXT
                )
            """)

            title = "Shopping list"
            content = "Buy milk, bread and eggs."
            cursor.execute(
                "INSERT INTO notes (title, content) VALUES (%s, %s)",
                (title, content)
            )
            connection.commit()
            print(f"Note added: {title}")

            cursor.execute("SELECT id, title, content FROM notes")
            for row in cursor.fetchall():
                print(f"{row['id']}. {row['title']}: {row['content']}")
except pymysql.MySQLError as e:
    print("Database error:", e)

✅ Проверка в VS Code

  1. Откройте папку с проектом в VS Code.
  2. Создайте файл homework_notes_app.py, скопируйте решение и замените параметры подключения на свои.
  3. Запустите файл через терминал:
    python homework_notes_app.py
  4. Убедитесь, что в консоли появилось сообщение о создании базы и добавленной заметке.
  5. Проверьте, что заметка выводится через DictCursor с именами колонок.
  6. Если программа падает, проверьте:
    • запущен ли сервер MySQL;
    • правильны ли логин и пароль;
    • есть ли у пользователя права на создание баз и таблиц;
    • не забыли ли вы вызвать commit() после вставки.
⚠️ Проверить по документации: в учебных примерах используется сервер ich-edit.edu.itcareerhub.de. Для локальной проверки замените параметры подключения на свои. Если база уже существует, повторный запуск программы добавит ещё одну заметку — для чистоты эксперимента можно использовать DELETE FROM notes перед вставкой.