我的数据Feed如下所示:
{['item_id': 1, ... 'price': 123, ... ],
['item_id': 1, ... 'price': 124, ... modifiers: [1, 2, 3],
['item_id': 1, ... 'price': 125, ... modifiers: [100, 150, 500 ... ],
['item_id': 2, ... 'price': 200, ...],
...}
基本上可以修改一些item
- 可以将它想象成可以用额外的东西(例如AC,电子窗等)修改的汽车,但也可以单独出售,他们的价格在拍卖中。
我的(当前)item
课程如下所示:
class Item(Base):
__tablename__ = 'items'
id = Column(Integer, primary_key=True)
name = Column(String)
price = Column(Integer)
我不确定如何捕获那里的modifiers
。我知道我可以创建一个Modifier
例如:
class Modifier(Base):
__tablename__ = 'modifiers'
id = Column(Integer, primary_key=True)
但是我如何实现以下目标:
1)表格必须是多对多关系,因为任何修饰符都可以应用于任何项目,任何项目都可以有多个修饰符。
2)更重要的是 - 我需要有效地区分['item_id': 1, ... ]
和['item_id': 1, ... , modifiers: [1, 2, 3]
(我可能每天扫描数亿个此类项目)。
*最终目标*:
保持每个项目(基本项目和修改组合)的价格直方图'去'。这不是一个简单的“基本项目价格”+“每个修饰符的价格”,因为例如某些项目不再生产,但基础项目的价值将高于修改项目的价值。因此,我需要快速确定哪个项目&我们正在讨论修饰符组合,并为其分配当前价格。
*结束目标2 *:
了解商品的平均价格,能够有效地确定是否值得购买。通过有效,我的意思是真正有效,因为正如我所说,它可能每天有数亿次不同的拍卖,所以做一些事情是不可行的:
buy_list = []
for a in auctions:
item_id = a['item_id'] #not good. this doesn't include modifiers
price = a['price']
#way too slow I think. If 10^8 auctions, would create a 10^8 calls to db.
buy_price = some_query(item_id)
if buy_price < price:
buy_list.append(a)