2010-08-09 8 views
2

Я как-то потерялся, я хочу сделать что-то вроде ниже, которое фильтрует по ID.Google app engine: фильтр по ID

id = 1000 
query = Customers.all() 
query.filter('ID =', id) 

или

query = db.GqlQuery("select * from Customers where ID = %s" % id) 

Что такое правильный метод для фильтрации по ID?

ответ

4

оба правильные и даже Customers.gql ("WHERE ID =: 1", id);

Edit: Если идентификатор автоматически создается свойство идентификатора следует использовать Customers.get_by_id()

+2

Я попробовал, но все не возвращают результат, поэтому мне интересно, что такое правильный синтаксис ID? – Peter

+0

Нужно ли писать что-то в index.yaml, чтобы эта функция get_by_id работала с идентификатором по умолчанию? –

0

У меня была такая же проблема, и оказалось, что я просто слишком много работает. Ответ кроется в getObjectById(). Если это сработает для вас, перейдите по ссылке my very-similar S.O. question и ответьте Гордону на голосование, так как он тот, кто показал мне это.

Player result = null; 
if (playerKey == null) 
{ 
    log.log(Level.WARNING, "Tried to find player with null key."); 
} 
else 
{ 
    PersistenceManager pm = assassin.PMF.get().getPersistenceManager(); 

    try { 
     result = (Player) pm.getObjectById(Player.class, playerKey); 
    } catch (javax.jdo.JDOObjectNotFoundException notFound) { 
     // Player not found; we will return null. 
     result = null; 
    } 

    pm.close(); 
} 

return result; 
+0

Хех. К сожалению, извините - я только заметил, что вы хотели python, и я дал вам Java. Ну, я уверен, что есть и метод getObjectByID в API-интерфейсах python. Удачи! – Olie

1

вам нужно использовать Customers.get_by_id(id)

+0

Нужно ли мне настроить index.yaml, чтобы эта функция работала с идентификатором по умолчанию? –