Google app engine 在Google应用程序引擎Python中存储值的最简单方法?
我很懒!我只想存储一个字符串值。这就是全部!Google app engine 在Google应用程序引擎Python中存储值的最简单方法?,google-app-engine,Google App Engine,我很懒!我只想存储一个字符串值。这就是全部! 我可以跳过任何类型的建模,只存储一个值吗?据我所知,还没有:数据存储是App Engine上唯一可用的存储。然而,即使你很懒,代码也不多 确保导入db模块: from google.appengine.ext import db 然后只存储一个键/值对(然后可以使用此模型存储可能添加的任何其他杂项字符串): 您可以通过以下方式再次获得: db.Query(Entry).filter("myKey=", "Title").get().myString
我可以跳过任何类型的建模,只存储一个值吗?据我所知,还没有:数据存储是App Engine上唯一可用的存储。然而,即使你很懒,代码也不多 确保导入
db
模块:
from google.appengine.ext import db
然后只存储一个键/值对(然后可以使用此模型存储可能添加的任何其他杂项字符串):
您可以通过以下方式再次获得:
db.Query(Entry).filter("myKey=", "Title").get().myStringValue
根据您希望存储信息的时间长短,您还可以使用memcache: 进口:
from google.appengine.api import memcache
获取和设置数据所需的全部知识:
memcache.set("key", value)
value = memcache.get("key")
如果数据需要长期持久性,则需要使用后端数据存储。建议同时使用memcache和数据存储,因为memcache可以随时刷新。对于短期、短暂的持久性,memcache起到了关键作用
更多信息请点击此处:
Mark B的解决方案很好,但是如果您的“密钥”是实体的正确密钥,您将获得更好的性能。这样就可以将所需数据的扫描量减半。(在SQL术语中,您将按主键进行选择。) 现在可以使用class方法获取和设置
Global.set('foo', 'this is the value for foo')
print "The value of foo is: %r" % Global.get('foo')
我本以为在这种情况下(当我们只存储几个字符串时),性能优势可以忽略不计,但是get/set代码比我的答案要优雅得多。你是对的,对于单个值来说,性能可以忽略不计。如果每个查询执行20次或更多的获取,那么它可能会累加起来,因为(IIRC)按键获取大约为100ms,但按属性筛选器获取大约为200ms。可以,但这将涉及混乱的低级数据存储API,并且几乎肯定不会比使用db.Model子类更懒惰,由于API没有在普通文档中记录,您几乎必须使用RTFS。好的,这并不难。:)但是我确实喜欢memcache选项。@马克·贝尔,第一次如何初始化这个
MyData
模型?我正在考虑使用URL和函数。有没有更简单的方法?谢谢!另外,myKey=db.StringProperty(required=True)
是冗余的。Model.get\u或\u insert(key\u name,**kwds)
将是一个更好的解决方案。应该是data=MyData(myKey=“Title”,myValue=“我的应用程序引擎应用程序”)
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')