google app engine - datastoreのけんきゅう
簡単なけんきゅうです。
class Price(db.Model): price = db.IntegerProperty()このクラスを使います。
now = Price.all()とやると、 <google.appengine.ext.db.Query object at 0x106845fd0>が返ってきます。これはデータが入っていようが、空だろうがこのような結果が返ってきます。
now = Price.all()now = now.fetch(1)とやると、 []が返ってきます。 当然これは、Priceにデータが入ってなかったからです。もしあれば、[<main.Price object at 0x1043a6210>]といったリストが返ってきます。
now = Price.all().fetch(1)if not now: now = Price(price=100)とやると、<main.Price object at 0x105e88810>が返ってきます。当然これはPriceにデータがなかったので、Priceオブジェクトを作成してnowに代入したからこの結果になってます。もしPriceにデータがあれば、[<main.Price object at 0x103f4aad0>]といったように、リストが返ってきます。
now = Price.all().fetch(1)if not now: now = Price(price=100)else: now = now[0]とやると、Priceにデータがあってもなくても、<main.Price object at 0x106dcff90>といったようなものが返ってきます。
つまり
- Price.all().fetch(1)とやると、オブジェクトのリストを返します。
- Price.all().fetch(1)[0]とやれば、オブジェクト自体を取り出せます。(ただし、オブジェクトが無かった場合エラーになります)
- よってfetch()後のリストが空でないことを確認した上で、オブジェクトを取り出します。