Передаётся в connect(); строки возвращаются как словари
pymysql.connect(..., cursorclass=DictCursor)
row["column_name"]
Доступ к значению по имени колонки
print(row["first_name"])
Изменение данных
Метод
Описание
Пример
connection.commit()
Сохраняет изменения INSERT, UPDATE, DELETE в базе
connection.commit()
connection.rollback()
Отменяет изменения с начала текущей транзакции
connection.rollback()
cursor.executemany(sql, params)
Выполняет один SQL-запрос с несколькими наборами параметров
cursor.executemany("INSERT INTO t (a) VALUES (%s)", [(1,), (2,)])
DDL-команды (создание структуры)
Команда
Описание
Пример
CREATE DATABASE IF NOT EXISTS name
Создаёт базу данных, если она ещё не существует
cursor.execute("CREATE DATABASE IF NOT EXISTS market")
CREATE TABLE IF NOT EXISTS name (...)
Создаёт таблицу, если она ещё не существует
cursor.execute("CREATE TABLE IF NOT EXISTS products (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10, 2))")
Команды определения данных (CREATE DATABASE, CREATE TABLE) не требуют вызова commit() — они фиксируются автоматически.
Жизненный цикл транзакции
try:
# шаги транзакции
cursor.execute("INSERT INTO ...")
cursor.execute("UPDATE ...")
connection.commit() # успех → сохраняем
except Exception as e:
connection.rollback() # ошибка → откатываем
print("Transaction failed:", e)
⚠️ Проверить по документации: в PyMySQL по умолчанию автокоммит отключён. В некоторых других драйверах или при включённом autocommit=True поведение может отличаться — сверяйтесь с документацией.