Live Chat

We'll need to share your messages (and your email address if you're logged in) with our live chat provider, Drift. Here's their privacy policy.

If you don't want to do this, you can email us instead at contact@anvil.works.

Storing and Displaying Data
« Anvil Tutorials

Storing Data

7m 18s

Most apps need to store information between one visit and the next. This video will introduce you to Anvil’s Data Tables service, which lets you store data quickly and securely (written version below).

It will also show you how to display lists of data using Data Bindings and the RepeatingPanel.

In this video, we will build an online To-Do list app. Let’s get going.

Edit this app

Want to know more?

To learn more about Data Tables, read the Data Tables section of the Anvil reference manual.

You can also learn about making advanced queries on your Data Tables using anvil.tables.query.

Or perhaps read about Data Bindings and RepeatingPanel in the reference manual.

Next tutorial

In our next tutorial, we expand this app to support multiple users. Check it out!


The video in writing

Prefer reading to watching? Here’s a written version.


Data Tables | 0:28 - 1:31


We use Data Tables to store the reminders. Data Tables is an out-of-the-box option for data storage in Anvil, and it’s backed by PostgreSQL.

Our reminders are stored in a table with a Text column for the description, and a True/False column to mark which reminders are done.

For this app, we enable read/write access to our Reminders table from the client Pencil icon to enable read/write access . The next tutorial describes how to precisely control Data Tables access via the server to meet security best-practice.


Displaying items as a list | 1:31 - 2:20


We want to display our reminders visually, so on our Form we need to create a list with one element per reminder. We do this using a RepeatingPanel. A RepeatingPanel repeats a UI template once for each item in a list.

We add a CheckBox to the template, which is sufficient to display each reminder.


Data Bindings | 2:20 - 3:14


Data Bindings bind a property of a component to a single Python expression. The ‘meaning’ of the property is defined in a single place, which can help prevent bugs.

We set the CheckBox’s text property to the ‘description’ column, and its checked property to the ‘done’ column.


Configuring the RepeatingPanel | 3:14 - 3:52


We make the RepeatingPanel show each item in the Reminders table:

To achieve this, we set the RepeatingPanel’s items to the list of rows from the Reminders table:

self.repeating_panel_1.items = app_tables.reminders.search()

The RepeatingPanel automatically creates an entry for each item in its items property.


Adding reminders | 3:52 - 5:22


We add a TextBox and Button to our GUI.

In the Button’s click event handler, we add a new row to the Data Table.

    new_row = app_tables.reminders.add_row(description=self.new_reminder_box.text)

Then we update the RepeatingPanel to reflect the changes in the Data Table. The display is updated automatically.

    self.repeating_panel_1.items = app_tables.reminders.search()

Deleting reminders | 5:22 - 6:42


We make each item deletable by adding a delete Link to the RepeatingPanel’s template. To make the delete happen, we add this code to the Link’s click event handler:

    self.item.delete()
    self.remove_from_parent()

Publishing | 6:42 - 6:58


We’ve tested it and it works, so it’s time to publish. We choose ‘Publish App’ in the Gear menu Gear Menu Icon and copy-paste the private link. This is a random, unguessable URL that’s similar to a Google Docs sharing link.

Anvil apps can also be published at a more memorable URL, simply by clicking ‘Share via public link’.

Here’s the final app:


Try it for yourself

Build this app for yourself - Sign up and follow along, or watch more tutorials in the Anvil Learning Centre.


Next up

To complete the Anvil Essentials course, we explore user authentication and data security in Multi-User Applications with Anvil.

You will then be able to build and publish multi-user data management apps with Anvil.

The first tutorial in the series is the Introduction to Anvil.