Соединение и курсор
| Команда / метод | Описание | Пример |
|---|---|---|
pymysql.connect(...) | Создаёт соединение с MySQL | pymysql.connect(host="...", user="...", password="...", database="hr") |
connection.cursor() | Создаёт курсор для запросов | cursor = connection.cursor() |
cursor.execute(sql, params) | Выполняет SQL с параметрами | cursor.execute("SELECT * FROM t WHERE id = %s", (1,)) |
cursor.fetchall() | Возвращает все строки | rows = cursor.fetchall() |
cursor.fetchone() | Возвращает одну строку или None | row = cursor.fetchone() |
for row in cursor | Итерация по строкам | for row in cursor: print(row) |
Синтаксис JOIN
Соединение двух таблиц по полю:
SELECT first_name, last_name, department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id
Альтернатива с USING, если имена столбцов совпадают:
SELECT first_name, last_name, department_name
FROM employees
JOIN departments USING (department_id)
Сортировка
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
DESC — по убыванию, ASC — по возрастанию (используется по умолчанию).
Форматирование вывода
Для нумерации строк и подстановки значений используйте f-string и enumerate:
for i, (first, last, title, salary) in enumerate(rows, start=1):
print(f"{i}. {first} {last} — {title} — {salary}")
Исключения
| Исключение | Когда возникает |
|---|---|
pymysql.MySQLError | Базовый класс ошибок PyMySQL |
pymysql.OperationalError | Проблемы соединения |
pymysql.ProgrammingError | Ошибки в SQL-запросе |
ValueError | Некорректное преобразование строки в число |
IndexError | Индекс за пределами списка |
Проверить по документации: полный список исключений PyMySQL, поддерживаемые параметры
connect и поведение автокоммита см. в официальной документации PyMySQL.