Oops, I made an assumption "it worked for me with python sdk for appengine using dev_appserver.py"
That was wrong. BELONGS is broken in gae. db(~db.languages.id.belongs(db()._select(db.words.lang, distinct=True))).select() causes dev_appserver.py to print out File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/restricted.py", line 188, in restricted exec ccode in environment File "/home/kra/Evolve/Works/Python/web2py_vl/applications/init/controllers/manage.py:clean", line 54, in <module> File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/globals.py", line 95, in <lambda> self._caller = lambda f: f() File "/home/kra/Evolve/Works/Python/web2py_vl/applications/init/controllers/manage.py:clean", line 24, in clean File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/dal.py", line 4511, in select return self.db._adapter.select(self.query,fields,attributes) File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/dal.py", line 2677, in select (items, tablename, fields) = self.select_raw(query,fields,attributes) File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/dal.py", line 2637, in select_raw filters = self.expand(query) File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/dal.py", line 2550, in expand return expression.op(expression.first) File "/home/kra/Evolve/Works/Python/web2py_vl/gluon/dal.py", line 2613, in NOT raise SyntaxError, "Not suported %s" % first.op.__name__ SyntaxError: Not suported BELONGS