Gennady Kovshenin committed 82b29c0

Use sqlite3.Row factory in Flaskr

As pointed out in issue #588 sqlite3.Row should be used instead of
using casting to dict(). Also altered the "Easy Querying" Patterns
example to include the more correct way to return rows as dicts.
Did not touch Tutorial examples ("Views"), as these are not up to
date with the current Flaskr code, and the "Show Entries" section
points out the "Easy Querying" section on how to convert to a

  • Participants
  • Parent commits 2b885ce

Comments (0)

Files changed (2)

File docs/patterns/sqlite3.rst

     db.row_factory = make_dicts
+Or even simpler::
+    db.row_factory = sqlite3.Row
 Additionally it is a good idea to provide a query function that combines
 getting the cursor, executing and fetching the results::

File examples/flaskr/

     top =
     if not hasattr(top, 'sqlite_db'):
-        top.sqlite_db = sqlite3.connect(app.config['DATABASE'])
+        sqlite_db = sqlite3.connect(app.config['DATABASE'])
+        sqlite_db.row_factory = sqlite3.Row
+        top.sqlite_db = sqlite_db
     return top.sqlite_db
 def show_entries():
     db = get_db()
     cur = db.execute('select title, text from entries order by id desc')
-    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
+    entries = cur.fetchall()
     return render_template('show_entries.html', entries=entries)