【发布时间】:2012-06-21 04:51:51
【问题描述】:
不知怎的,我迷路了,我想做一些类似下面按 ID 过滤的事情。
id = 1000
query = Customers.all()
query.filter('ID =', id)
或
query = db.GqlQuery("select * from Customers where ID = %s" % id)
按 ID 过滤的正确方法是什么?
【问题讨论】:
标签: python
不知怎的,我迷路了,我想做一些类似下面按 ID 过滤的事情。
id = 1000
query = Customers.all()
query.filter('ID =', id)
或
query = db.GqlQuery("select * from Customers where ID = %s" % id)
按 ID 过滤的正确方法是什么?
【问题讨论】:
标签: python
两者都是正确的,甚至是 Customers.gql("WHERE ID = :1", id);
编辑:如果 ID 是自动创建的 id 属性,您应该使用 Customers.get_by_id()
【讨论】:
你需要使用Customers.get_by_id(id)
【讨论】:
我也遇到了同样的问题,结果证明我工作太努力了。答案在于 getObjectById()。如果这对您有用,请转到 my very-similar S.O. question 并给 Gordon 的答案投票,因为他是向我展示这个的人。
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;
【讨论】: