Начинается ли транзакция даже на SELECT?

Я прочитал в 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), потому что трудно узнать, только ли запрос читает данные и не записывает их.

  1. Это правда?
  2. Если да, это означает, что я должен выполнять cursor.commit () после каждого запроса, чтобы убедиться, что ни одна таблица не заблокирована?
  3. Другие проблемы, которых я не понимаю известно о?

Спасибо

6
задан warvariuc 12 January 2012 в 08:22
поделиться