gpt4 book ai didi

python - db.StringProperty 但属性偶尔是 datastore_types.Text?

转载 作者:行者123 更新时间:2023-11-28 18:49:28 26 4
gpt4 key购买 nike

在任何情况下,GAE 数据存储可能会将属性类型从 StringProperty 更改为 TextProperty(实际上忽略模型定义)?

考虑以下情况(简化):

class MyModel(db.Model):
user_input = db.StringProperty(default='', multiline=True)

我的数据存储区中此模型的某些实体实例的“user_input”(而不是简单的 str)的数据类型为 TextProperty,因此未编入索引。我可以通过检索实体、设置 model_instance.user_input = str(model_instance.user_input) 然后将实体放回数据存储来解决此问题。

我不明白的是,当此模型没有发生任何变化时,这种情况如何只发生在某些实体上。是否可以将 db.model 属性的“类型”从 StringProperty 覆盖为 TextProperty

最佳答案

至少在 ndb 中,包含 Unicode 的 StringProperties 有一个特殊的代码路径如果属性没有被索引。在这种情况下,它被更改为文本属性:相关片段是:

if isinstance(value, str):
v.set_stringvalue(value)
elif isinstance(value, unicode):
v.set_stringvalue(value.encode('utf8'))
if not self._indexed:
p.set_meaning(entity_pb.Property.TEXT)

我无法在 Python 端观察到这一点(请参阅 db.StringProperty but property is occasionally datastore_types.Text? ),但我在数据存储区中看到了它,并且在将数据存储区加载到 BigQuery 时它引起了麻烦。

所以只使用:

  • 字符串属性(indexed=True)
  • 文本属性()

避免 StringProperty(indexed=False) 如果您可能将混合的 unicodestr 值写入属性 - 因为它往往会发生外部数据。

关于python - db.StringProperty 但属性偶尔是 datastore_types.Text?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com