【问题标题】:update shopify price via python with one API call使用一个 API 调用通过 python 更新 shopify 价格
【发布时间】:2014-08-25 03:22:08
【问题描述】:

我正在使用 Shopify Python API,我想通过一次 API 调用来更新我的一种产品的价格。这是因为他们的 API 受到限制,而我正在更新大量项目,因此 API 调用减少 50% 将显着提高我的整体运行时间。

现在我正在这样做:

product = shopify.Product.find(shopify_id)
product.variants[0].price = new_price
product.save()

这需要两次 API 调用。有没有办法通过一个 API 调用在给定 shopify ID 的情况下更新价格?我试过这个(我在论坛上被告知为产品设置价格会更新所有变体):

product = shopify.Product(dict(id=shopify_id, price=new_price))
product.save()

并且 save() 返回 True,但价格没有更新。然后我尝试了这个:

product = shopify.Product(dict(id=shopify_id, price=new_price))
product.variants = [shopify.Variant()]
product.variants[0].price = new_price
product.save()

并且 save() 返回 False,product.errors.full_messages() 返回 ['Options are not unique']。

【问题讨论】:

  • 为什么只想使用一个 API 调用?如果第一批代码运行良好,需要更改它吗?
  • @Lego Stormtroopr,他们的 API 受到限制,我正在更新大量产品。我将编辑问题以明确这一点。

标签: python shopify


【解决方案1】:

我知道这已经很老了,但这是一个从未得到正确回答的好问题。似乎所有的回答都没有完全听到你在问什么。

我一直在开发一个 shopify 应用程序,该应用程序需要一次更新许多产品,这可能需要一段时间,特别是如果您需要为每个产品调用 API 两次(即一次检索并再次更新)。

我不得不深入研究源代码才能找到它,但产品类有一个 add_variant 方法似乎可以解决问题。

product = shopify.Product(dict(id=123456789))
variant = shopify.Variant(dict(id=987654321, price=9.99))
product.add_variant(variant)
product.save()

这将更新产品,并允许您基本上对产品执行 PUT 请求。您可以根据需要更新尽可能多或尽可能少的变体,并且不会干扰其他变体。此外,它不需要初始产品调用来检索您正在更新的产品。

【讨论】:

  • 不错!对于大型更新,这将 API 流量减少了一半,这对我来说非常重要。
  • 糟糕,我在这里犯了一个错误。尽管它似乎执行了我在测试期间解释的方式,但这是由于少量的变体似乎一次全部更新,而实际上add_variant 每次只是在产品上调用“保存”实际上是比你最初尝试的更糟糕。现在,请取消选中我的答案是否正确,我会继续调查。
  • 你可以试试 shopify.Variant(dict(id=shopify_variant_id, price=x)).save(),我注意到这行得通,但还没有机会验证它跨度>
【解决方案2】:

假设您有要更新的资源的 ID,只需对其执行 PUT 调用,无需先执行 GET 即可。很明显,产品没有价格,只有变体有,因此你的失败。您的另一种选择是直接吸收它并获取产品或变体资源,更新变体的价格并执行 PUT。请注意,API 调用很便宜。试图节省它们通常比烧掉一对更痛苦。

【讨论】:

  • 我澄清了我的问题,以解释为什么只调用一次 API 对我来说很重要。所以没有办法只使用产品的 ID 来做到这一点,我需要我想要更新的变体的 ID?
  • API 被限制这一事实并不是吝啬 API 调用的理由。由于您拥有大量产品,因此无论您削减多少 API 调用,都会启动节流阀。你是牦牛刮错牦牛。相反,您应该接受确保您的代码与限制一起工作的想法,因为您必须这样做。避免这种情况几乎是不可能的。
猜你喜欢
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2023-02-10
相关资源
最近更新 更多