Create a Web Database (Python 2.7)

These instructions are for creating a TinyWebDB database using Python2.7 and App Engine. Python 2.5 is being deprecated within App Engine, so these instructions and sample code are the best way to go!

TinyWebDB is an App Inventor component that allows you to access the web from an Android app. You can use TinyWebDB to access a data source (API) or to store the app’s  data persistently in a web database. These notes show you how to do the latter– set up a web database, and set it up in the cloud using Google’s free App Engine service. With the sample code provided here, you can set up a web database that lives on Google’s servers in just minutes, and you need not be a programmer to do so.

Note that App Inventor also provides a TinyDB component. TinyDB stores data directly on the phone and is simpler to use.  TinyWebDB is required only if data needs to be shared between phones and apps (e.g., social apps, multi-player games).

By default, the TinyWebDB component stores data on a test service provided by App Inventor, http://appinvtinywebdb.appspot.com/. This service is helpful for testing, but it is shared by all App Inventor users, and it has a limit of 1000 entries. If you use it, your data will be overwritten eventually.

For anything other than tests, you’ll want to create a custom web service that isn’t shared with other App Inventor apps and programmers. You need not be a programmer to do so– just follow the instructions below and you’ll have your own service within minutes.

To create your own web service, follow these instructions:

  • Download App Engine for Python at http://code.google.com/appengine/. Make sure and download the App Engine SDK for Python. After installing it, run the GoogleAppEngineLauncher by clicking its icon.
  • Download this sample web database code. It is a zip file containing the source code for your custom web database service
  • Unzip the downloaded zip file. It will create a folder named appinventordb. You can rename it if you want.
  • In the GoogleAppEngineLauncher, choose File | Add Existing Application. Browse to set the Path to the appinventordb folder you just unzipped. Then click the Run button. This will launch a test web service that runs on your local machine.
  • This code is setup to run with App Engine using Python 2.7, so you’ll need Python 2.7 on your computer and make sure App Engine is configured to use it (in App Engine Launcher, choose Preferences and then put in path to Python2.7
  • You can test the service by opening a browser and entering “localhost:8080” as the URL (the port number might be something different than 8080, check logs). You’ll see the web page interface to your web service. The end-goal of this service is to communicate with a mobile app created with App Inventor. But the service provides a web page interface to the service to help programmers with debugging. You can invoke the get and store operations by hand, view the existing entries, and also delete individual entries
  • Your app is not yet on the web, and thus not yet accessible to an App Inventor app. To get it there, you need to upload it to Google’s App Engine servers.
  • In the GoogleAppEngineLauncher, choose Dashboard. Enter your Google account information and you’ll be taken to an App Engine dashboard.
  • Choose Create an Application. You’ll need to specify a globally unique Application Identifier. Remember the Application identifier as you’ll need it later. Provide a name to your app and click Create Application to submit. If your Identifier was unique, you now have a new, empty app on Google’s servers.
  • Open a text editor on your local computer and open the file app.yaml within the appinventordb folder you unzipped. Modify the first line so that the application matches the application identifier you set at Google.
  • In GoogleAppEngineLauncher, choose Deploy and follow the steps for deploying your app.
  • Test to see if your app is running on the web. In a browser, enter myapp.appspot.com, only substitute your application identifier for “myapp”. The app should look the same as when you ran it on the local test server. Only now, it’s on the web and you can access it from your App Inventor for Android app.

App Inventor Client Apps

Once you have an “App-Inventor-compliant” web database, you can create App Inventor apps that access it. For the sample you just created, do the following:

  • Drag in a TinyWebDB component into the Component Designer.
  • Modify the ServiceURL property from the default http://appinvtinywebdb.appspot.com/ to the URL of your service.
  • Any StoreValue operations (blocks) will store data at your service, and any GetValue operations will retrieve from your service.

Here are some blocks that store and retrieve data:

4 Responses

  1. Thanks very much for sharing this info…especially the new zipped database code file…I was struggling trying to migrate to Python 2.7 and I was stuck…should have checked here several days ago !

    Thanks again,
    Jim

  2. This is a complete and very helpful information !
    I could also migrate to Python 2.7.
    Thank you very much.

    Fujio Yamamoto

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s