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

the*_*ror 4 google-app-engine

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

Mar*_*ell 8

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

确保导入db模块:

from google.appengine.ext import db
Run Code Online (Sandbox Code Playgroud)

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

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()
Run Code Online (Sandbox Code Playgroud)

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

db.Query(Entry).filter("myKey=", "Title").get().myStringValue
Run Code Online (Sandbox Code Playgroud)


Jas*_*ith 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
Run Code Online (Sandbox Code Playgroud)

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

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