I took a second look at this today. I had it working in April but somehow it broke along the way since nobody else had access or tested it. I fixed it now in trunk.
Here are some instructions: 1) read the docs: http://code.google.com/apis/sql/docs/before_you_begin.html#enroll 2) apply for a SQL instance: https://code.google.com/apis/console/?pli=1 3) Google will give you one and the name wil be "your_project:instance1" 4) take your favorite web2py application (no limitation) and change the connection string to this: if request.env.web2py_runtime_gae: db = DAL('google:sql://your_project:instance1/ mydbname',migrate_enabled=True) session.connect(request,response,db=db) else: db = DAL('sqlite://storage.sqlite') web2py will create the database "mydbname" on the SQL instance "your_project:instance1" 5) deploy it as you normally deploy on GAE (no need to test it with dev_appserver). If it works with SQLite it will work with GAE+SQL. Just make sure you do not read/write on filesystem. Everything should work out of the box including migrations, transactions, joins, etc. Caveats: GAE has no filesystem. So *.table files are store in a table web2py_filesystem with is not migrated. You do not want to access this table at every request so, as soon as your app works, change migrate_enabled=True into migrate_enabled=False.