An alternative to the cursor.description solution from smallredstone could be to use row.keys():
import sqlite3
connection = sqlite3.connect('~/foo.sqlite')
connection.row_factory = sqlite3.Row
cursor = connection.execute('select * from bar')
# instead of cursor.description:
row = cursor.fetchone()
names = row.keys()
The drawback: it only works if there is at least a row returned from the query.
The benefit: you can access the columns by their name (row['your_column_name'])
Read more about the Row objects in the python documentation.