Цитирование из документации:
Совет: Фильтры запросов не имеют явного способа сопоставления только части строкового значения, но вы можете подделать совпадение префикса с помощью фильтров неравенства:
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
Это соответствует каждому объекту MyModel с помощью свойства строки, начинающегося с символов abc. Строка Юникода u "\ ufffd" представляет максимально возможный символ Юникода. Когда значения свойств сортируются в индексе, значения, попадающие в этот диапазон, являются всеми значениями, которые начинаются с данного префикса.
http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html
Другим вариантом является SearchableModel, однако я не верю, что он поддерживает частичные совпадения.
http://billkatz.com/2008/8/A-SearchableModel-for-App-Engine