Python SQL炼金术/多类关系
我有个问题。看下面,我需要属性'priced_item'是3个不同类中的一个。但是使用sqlalchemy,我只知道如何与另一个类建立关系。如何在不使用继承的情况下建立与多个类的关系?实现这一目标的最佳方式是什么 最后,我想知道sqlalchemy中创建包含多个类的列表的最佳方法,这在python中是很平常的事情,但是表对该功能的影响很大 谢谢Python SQL炼金术/多类关系,python,sqlalchemy,Python,Sqlalchemy,我有个问题。看下面,我需要属性'priced_item'是3个不同类中的一个。但是使用sqlalchemy,我只知道如何与另一个类建立关系。如何在不使用继承的情况下建立与多个类的关系?实现这一目标的最佳方式是什么 最后,我想知道sqlalchemy中创建包含多个类的列表的最佳方法,这在python中是很平常的事情,但是表对该功能的影响很大 谢谢 class QuoteItem(Base, DataObject): __tablename__ = 'quote_item' uui
class QuoteItem(Base, DataObject):
__tablename__ = 'quote_item'
uuid = Column(String, primary_key=True)
quote_id = Column(String, ForeignKey('quote.uuid'))
quote_template = relationship('Quote')
position = Column(Integer)
quantity = Column(Integer)
priced_item = relationship( ***** HERE IS MY ISSUE *****)
discriminator = Column('type', String)
__mapper_args__ = {
'polymorphic_identity': 'quote_item',
'polymorphic_on': discriminator
}
def __init__(self, quote, quantity, priced_item):
"""
:type quote: Quote
:type quantity: int
:type priced_item: AbstractPart | AbstractLabor | AbstractService
"""
DataObject.__init__(self)
self.quote = quote
self.quantity = quantity
self.price_item = priced_item
我认为这里的问题不是sqlalchemy,而是数据库结构 首先想象一下,您只使用SQL。如何在数据库中表示这些数据 “报价项目”和“定价项目”之间的关系是一对多,对吗?一个“报价项目”有多个“定价项目” 为了能够在数据库中链接它们,您必须为“定价项目”创建一些通用表,例如:
items
-----------
id type quoted_item_id
1 priced_type1 1
2 priced_type2 1
3 priced_type3 1
...
每个项目都有一个quoted\u item\u id
,因此每个报价项目都与许多定价项目相关
然后,您可以为不同类型的定价项目创建其他表(项目id可以是主键):
等等
上面是多表继承,您也可以使用单表继承(一个大表用于所有定价项目),我认为其他一些变体也是可能的
一旦您决定如何在数据库级别执行此操作,就可以转到sqlalchemy,它支持此类模式,请查看文档中的。我认为这里的问题不是sqlalchemy,而是数据库结构 首先想象一下,您只使用SQL。如何在数据库中表示这些数据 “报价项目”和“定价项目”之间的关系是一对多,对吗?一个“报价项目”有多个“定价项目” 为了能够在数据库中链接它们,您必须为“定价项目”创建一些通用表,例如:
items
-----------
id type quoted_item_id
1 priced_type1 1
2 priced_type2 1
3 priced_type3 1
...
每个项目都有一个quoted\u item\u id
,因此每个报价项目都与许多定价项目相关
然后,您可以为不同类型的定价项目创建其他表(项目id可以是主键):
等等
上面是多表继承,您也可以使用单表继承(一个大表用于所有定价项目),我认为其他一些变体也是可能的
一旦您决定如何在数据库级别执行此操作,您可以转到sqlalchemy,它支持此类模式,请查看文档中的。您可能会发现这很有用:您可能会发现这很有用: