Per la libreria sqlite3
, la chiamata cursor.execute()
restituisce sempre nuovamente l'oggetto cursore. Entrambe le tue affermazioni sono identiche qui:
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> conn.cursor().execute('SELECT DATE()')
<sqlite3.Cursor object at 0x1083d89d0>
>>> cursor = conn.cursor()
>>> cursor.execute('SELECT DATE()')
<sqlite3.Cursor object at 0x1083d8960>
Tuttavia, se non hai memorizzato un riferimento al cursore restituito dalla chiamata "concatenata", non avrai più accesso al set di risultati, un nuovo oggetto cursore da connection.cursor()
non elenca quei risultati come sarà un oggetto cursore diverso:
>>> conn.cursor().execute('SELECT DATE()')
<sqlite3.Cursor object at 0x1083d8a40>
>>> list(conn.cursor())
[]
>>> cursor = conn.cursor().execute('SELECT DATE()')
>>> list(cursor)
[(u'2014-02-18',)]
Questo non ha nulla a che fare con il concatenamento e tutto con lo scopo dei cursori: fornire viste distinte sul database, ognuna con il proprio stato indipendente.