title: Why do you need to create a cursor when querying a sqlite database?
body: <p>I'm completely new to <a href="https://docs.python.org/3.6/library/sqlite3.html" rel="noreferrer">Python's sqlite3 module</a> (and SQL in general for that matter), and this just completely stumps me. The abundant lack of descriptions of <a href="https://docs.python.org/3.6/library/sqlite3.html#cursor-objects" rel="noreferrer"><code>cursor</code> objects</a> (rather, their necessity) also seems odd. </p>
  
  <p>This snippet of code is the preferred way of doing things:</p>
  
  <pre><code>import sqlite3
  conn = sqlite3.connect("db.sqlite")
  c = conn.cursor()
  c.execute('''insert into table "users" values ("Jack Bauer", "555-555-5555")''')
  conn.commit()
  c.close()
  </code></pre>
  
  <p>This one isn't, even though it works just as well and without the (seemingly pointless) <code>cursor</code>:</p>
  
  <pre><code>import sqlite3
  conn = sqlite3.connect("db.sqlite")
  conn.execute('''insert into table "users" values ("Jack Bauer", "555-555-5555")''')
  conn.commit()
  </code></pre>
  
  <p>Can anyone tell me why I need a <code>cursor</code>?
  <br />It just seems like pointless overhead. For every method in my script that accesses a database, I'm supposed to create and destroy a <code>cursor</code>?
  <br />Why not just use the <code>connection</code> object?</p>