Flaskr is a database powered application as outlined earlier, and more
precisely, an application powered by a relational database system. Such
As outlined earlier, Flaskr is a database powered application, and more
precisely, it is an application powered by a relational database system. Such
systems need a schema that tells them how to store that information. So
before starting the server for the first time it's important to create
that schema.
@ -15,13 +15,11 @@ Such a schema can be created by piping the `schema.sql` file into the
sqlite3 /tmp/flaskr.db < schema.sql
The downside of this is that it requires the sqlite3 command to be
installed which is not necessarily the case on every system. Also one has
to provide the path to the database there which leaves some place for
errors. It's a good idea to add a function that initializes the database
installed which is not necessarily the case on every system. This also require that we provide the path to the database which can introduce errors. It's a good idea to add a function that initializes the database
for you to the application.
To do this we can create a function called `init_db` that initializes the
database. Let me show you the code first. Just add that function below
database. Let me show you the code first. Just add this function below
First we want to create the database schema. For this application only a
single table is needed and we only want to support SQLite so that is quite
easy. Just put the following contents into a file named `schema.sql` in
the just created `flaskr` folder:
First we want to create the database schema. Only a single table is needed
for this application and we only want to support SQLite so creating the database schema is quite easy. Just put the following contents into a file named `schema.sql` in the just created `flaskr` folder:
Now that we have the schema in place we can create the application module.
Let's call it `flaskr.py` inside the `flaskr` folder. For starters we
will add the imports and create the application object. For small
applications it's a possibility to drop the configuration directly into
the module which we will be doing here. However a cleaner solution would
be to create a separate `.ini` or `.py` file and load that or import the
Let's call it flaskr.py. We will place this file inside the flask folder.
We will begin by adding the imports we need and by adding the config section.
For small applications, it is possible to drop the configuration directly into
the module, and this is what we will be doing here. However a cleaner solution would be to create a separate `.ini` or `.py` file and load that or import the
values from there.
First we add the imports in `flaskr.py`::
@ -66,9 +65,7 @@ debug flag enables or disables the interactive debugger. *Never leave
debug mode activated in a production system*, because it will allow users to
execute code on the server!
We also add a method to easily connect to the database specified. That
can be used to open a connection on request and also from the interactive
Python shell or a script. This will come in handy later. We create a
We will also add a method that allows for easily connecting to the specified database. This can be used to open a connection on request and also from the interactive Python shell or a script. This will come in handy later. We create a
simple database connection through SQLite and then tell it to use the
:class:`sqlite3.Row` object to represent rows. This allows us to treat
the rows as if they were dictionaries instead of tuples.