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