在Google App Engine Python中存储值的最简单方法是什么?

时间:2010-02-28 07:52:23

标签: google-app-engine

我很懒!我只想存储一个字符串值。就这样! 我可以跳过任何类型的建模并只存储一个值吗?

3 个答案:

答案 0 :(得分:8)

据我所知:DataStore是App Engine上唯一可用的存储。但是,即使你很懒,也不是很多代码。 ;)

确保导入db模块:

from google.appengine.ext import db

然后只存储一个键/值对(然后您可以使用此模型存储您可能添加的任何其他杂项字符串):

class MyData(db.Model):
    myKey = db.StringProperty(required=True)
    myValue = db.StringProperty(required=True)

data = MyData(myKey="Title", myStringValue="My App Engine Application")
data.put()

您可以通过以下方式再次获取:

db.Query(Entry).filter("myKey=", "Title").get().myStringValue

答案 1 :(得分:7)

Mark B的解决方案很好,但如果您的“密钥”是实体的正确密钥,您将获得更好的性能。这样,您可以通过所需的数据将扫描结果减半。 (在SQL术语中,您将通过主键进行选择。)

class Global(db.Model):
    val = db.StringProperty()

    @classmethod
    def get(cls, key):
        return cls.get_by_key_name(key).val

    @classmethod
    def set(cls, key, val):
        entity = cls(key_name=key, val=val)
        entity.put()
        return val

现在您可以使用类方法进行设置。

    Global.set('foo', 'this is the value for foo')
    print "The value of foo is: %r" % Global.get('foo')

答案 2 :(得分:4)

根据您希望存储信息的时间长短,您还可以使用memcache:

导入:

from google.appengine.api import memcache

获取和设置数据所需的全部知识:

memcache.set("key", value)
value = memcache.get("key")

如果您的数据需要长期持久性,那么您需要使用后端数据存储区。建议对数据使用memcache和数据存储,因为可以随时刷新内存缓存。对于短期的,短暂的持久性,memcache可以解决问题。

更多信息: http://code.google.com/appengine/docs/python/memcache/usingmemcache.html