Подключение и соединение
| Конструкция | Назначение |
import pymysql | Импорт библиотеки |
pymysql.connect(host=..., user=..., password=..., database=...) | Создание соединения с базой данных |
pymysql.connect(**config) | Создание соединения из словаря параметров |
connection.open | Проверка, что соединение открыто |
connection.close() | Закрытие соединения |
connection.cursor() | Создание курсора |
connection.commit() | Сохранение изменений в базе |
connection.rollback() | Откат изменений в текущей транзакции |
Параметры подключения
| Параметр | Назначение |
host | Адрес сервера базы данных |
user | Имя пользователя |
password | Пароль пользователя |
database | Название базы данных (необязательно) |
charset | Кодировка соединения, например utf8mb4 |
cursorclass | Класс курсора, например DictCursor |
Курсор
| Метод | Назначение |
cursor() | Создаёт курсор для выполнения запросов |
cursor.execute(sql, params) | Выполняет SQL-запрос с параметрами |
cursor.executemany(sql, seq_of_params) | Выполняет запрос несколько раз с разными параметрами |
cursor.fetchone() | Возвращает одну следующую строку или None |
cursor.fetchmany(size) | Возвращает заданное количество строк |
cursor.fetchall() | Возвращает все оставшиеся строки |
cursor.close() | Закрывает курсор |
for row in cursor: | Итерация по результатам запроса |
Параметризованные запросы
| Плейсхолдер | Формат параметров | Пример |
%s | Кортеж или список | execute("SELECT * FROM t WHERE id = %s", (1,)) |
%(name)s | Словарь | execute("SELECT * FROM t WHERE id = %(id)s", {"id": 1}) |
Исключения PyMySQL
| Исключение | Когда возникает |
pymysql.MySQLError | Базовый класс всех ошибок MySQL |
pymysql.ProgrammingError | Ошибки в SQL-запросе, например несуществующая таблица |
pymysql.OperationalError | Проблемы подключения или работы сервера |
Контекстный менеджер with
| Конструкция | Назначение |
with pymysql.connect(...) as connection: | Автоматически закрывает соединение |
with connection.cursor() as cursor: | Автоматически закрывает курсор |
with connection.cursor() as cursor: ... connection.commit() | Безопасное выполнение изменяющего запроса |
DictCursor
| Конструкция | Назначение |
from pymysql.cursors import DictCursor | Импорт класса курсора-словаря |
cursorclass=DictCursor | Передача в pymysql.connect() |
row["column_name"] | Доступ к значению по имени колонки |
SQL-команды управления данными
| Команда | Назначение | Нужен commit()? |
SELECT | Получение данных | Нет |
INSERT | Добавление данных | Да |
UPDATE | Обновление данных | Да |
DELETE | Удаление данных | Да |
CREATE DATABASE | Создание базы данных | Нет |
CREATE TABLE | Создание таблицы | Нет |
USE database_name | Выбор активной базы данных | Нет |
Транзакции
| Метод | Назначение |
connection.commit() | Подтверждает все изменения в текущей транзакции |
connection.rollback() | Отменяет все изменения в текущей транзакции |