title: Does a transaction start even on SELECT?
body: <p>I read in the <a href="http://mysql-python.sourceforge.net/MySQLdb.html" rel="noreferrer">docs</a> :</p>
  
  <blockquote>
    <p>...since transactions start when a cursor execute a query, but end when COMMIT or ROLLBACK is executed by the 
    Connection object.</p>
  </blockquote>
  
  <pre><code>import MySQLdb
  
  db = MySQLdb.connect(user="root", db="test")
  c = db.cursor()
  c.execute("SELECT * FROM books")
  print c.fetchall()
  </code></pre>
  
  <p>I suspect that MySQLdb starts a transaction even on queries that do not modify data (like SELECT), because it is difficult to know if a query only reads data and doesn't write it.</p>
  
  <ol>
  <li>Is it true?</li>
  <li>If so, this means i should do <code>cursor.commit()</code> after every query, to be sure that no table is locked?</li>
  <li>Other issues i am not aware of?</li>
  </ol>
  
  <p>Thank you</p>