gpt4 book ai didi

python - 我应该将产品图像存储为 db.ListProperty(db.Blob) 还是 db.ListProperty(db.Key)?

转载 作者:行者123 更新时间:2023-11-30 23:39:34 30 4
gpt4 key购买 nike

我当前正在存储给定产品的上传图像,如下所示:

class Product(db.Model):
images= db.ListProperty(db.Blob)
# More properties ...

我用以下方法检索它们:

class ImageHandler(webapp2.RequestHandler):
def get(self):
productKey = cgi.escape(self.request.get('id'))

if productKey:
try:
product = Product.get(db.Key(productKey))
if product and product.images:
idx = 0 # if not img is passed, return the first one
imageIndex = cgi.escape(self.request.get('img'))
if imageIndex:
imageIndex = int(imageIndex)
if imageIndex > 0 and imageIndex < len(product.images):
idx = imageIndex

self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(str(product.images[idx]))
return
self.redirect('/img/image-missing.jpg')
return
except:
self.redirect('/img/image-404.jpg')
return
self.redirect('/img/image-404.jpg')

通过调用/image?id={{productkey}}&img={{imageindex}}

现在考虑:

  • 数据存储成本
  • CPU/内存/时间成本
  • 可能迁移到另一个应用/数据存储区,甚至迁移到亚马逊等。
  • 能够返回调整大小的图像以进行缩略图显示等。
  • 其他我没有考虑的因素

我应该保持这样,还是应该有一个单独的图像模型,它只包含一个db.BlobProperty,并且有一个db.ListProperty(db.Key) 而不是在产品型号中?

我不确定将图像保留为产品内部的 blob 是否会在我 get() 产品时自动获取它们(这会很糟糕),或者是否会减少数据存储访问,因为我不必获取另一个产品图像实体。

最后,任何改进此 python 代码(大量重定向、返回和条件)的建议也将受到赞赏。谢谢。

最佳答案

如果您认为每个数据存储实体的大小都绑定(bind)为 1MB,那么将 Blob 列表存储到一个实体中很容易成为一个问题。最好将每个图像存储在单独的模型中,并保留产品模型的 key 列表。

关于python - 我应该将产品图像存储为 db.ListProperty(db.Blob) 还是 db.ListProperty(db.Key)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432973/

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