我很懒!我只想存储一个字符串值。就这样! 我可以跳过任何类型的建模并只存储一个值吗?
答案 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