python - 如何访问 GAE ndb Python 中的所有重复结构化属性

标签 python google-app-engine google-cloud-datastore app-engine-ndb

class X(ndb.Model): 
    content = ndb.StringProperty() 
    number = ndb.IntegerProperty() 

class P(ndb.Model): 
    unit = ndb.StructuredProperty(X, repeated=True) 

使用数据存储查看器,我可以看到以下存储的数据:

Entity Kind             P 
Entity Key              ag1kZXZ-bGlmZXN3YWxschoLEg1BZHZlcnRpc2VtZW50IGCAgICA4NcKDA 
ID                      6015428115566296 
unit.content (list)     [u'Apple', u'Coca Cola', u'Orange', u'Audi']
unit.number (list)      [10L, 5L, 10L, 10L] 

目标:访问不同的unit.content值(例如“Apple”等)

[我是GAE Python新手;所以如果问题太愚蠢请原谅]

我的(不成功的)尝试[我尝试了其他一些方法但没有成功]:

unitv_query = P.query() 
mv = unitv_query.fetch() 
    for a in mv.unit: 
        logging.info ("content=[%s]", a.content) 

我收到以下错误:

    :: 
    File "C:\learn\eg5.py", line 495, in render_unit

        for a in mv.unit:

    AttributeError: 'list' object has no attribute 'unit'

感谢任何帮助

最佳答案

unit 属性将是 X's 的列表,但是您循环了错误的内容 你应该是这样的,

unitv_query = P.query() 
mv = unitv_query.fetch() 
    # mv is a list of P
    for a in mv: 

        # now loop over each entity in unit property.
        for i in a.unit:

            logging.info ("content=[%s]", i.content) 

在您的代码中,您尝试从 mv 访问单元,但是 mv 是 P 实体的列表 - 查询的结果,因此您无法访问 单位

关于python - 如何访问 GAE ndb Python 中的所有重复结构化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19829675/

相关文章:

google-app-engine - 在 NDB(Python 的 Google App Engine 数据存储库)中自动使用缓存是否会使事务模型无效?

python - 将 Appengine 数据存储区中的 ReferenceProperty 序列化为 JSON

google-app-engine - AppEngine 数据存储 Golang : Get ancestor for a query result

python - 如何使用 OpenCV 捕获多个摄像头流?

python - python 的 dict .get() 方法如何检查默认参数?

python - 使用senti_classifier和NLTK进行情感分析

google-app-engine - Tic Tac Toe AppEngine channel 示例机制

java - 是否有针对 "clean"错误(JPA)的 "Object Manager has been closed"解决方案?

python - 如何将每一行除以该行的特定列值?

python - 为什么 Python 在非迭代类型的操作中会给我一个 "TypeError: argument of type ' UserAgent' is not iterable"?