Я прочитал в docs :
... поскольку транзакции начинаются, когда курсор выполняет запрос, но заканчиваются, когда COMMIT или ROLLBACK выполняется Объект подключения.
import MySQLdb
db = MySQLdb.connect(user="root", db="test")
c = db.cursor()
c.execute("SELECT * FROM books")
print c.fetchall()
Я подозреваю, что MySQLdb запускает транзакцию даже для запросов, которые не изменяют данные (например, SELECT), потому что трудно узнать, только ли запрос читает данные и не записывает их.
cursor.commit ()
после каждого запроса, чтобы убедиться, что ни одна таблица не заблокирована? Спасибо