How to iterate through the columns in a row using sqlite3.Row
MRAB
python at mrabarnett.plus.com
Sun Mar 12 20:28:46 EDT 2017
On 2017-03-12 22:44, Chris Green wrote:
> This should be simple but I can't manage it at the moment! :-)
>
> I have opened a database connection and have set the row_factory to
> sqlite3.Row.
>
> So how do I actually iterate through a row of data having used
> fetchone to read a row.
>
> I.e. I have:-
>
> self.conn = sqlite3.connect(dbname)
> self.conn.row_factory = sqlite3.Row
> self.cursor = self.conn.cursor()
> self.table = table
> ...
> ...
> sql = "SELECT * FROM " + self.table + " WHERE firstName||lastName = ?"
> self.cursor.execute(sql, (name,))
> row = self.cursor.fetchone()
>
> I want a for loop which gives me the column names and values.
>
The docs tell you that the sqlite3.Row instances are like tuples, but
with additional features, such as a .keys() method that will tell you
the column names. Try:
print(row.keys())
With a little experimentation you'll find that can pass it to dict. Try:
print(dict(row))
More information about the Python-list
mailing list