Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在Google应用程序引擎Python中存储值的最简单方法?_Google App Engine - Fatal编程技术网

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')