Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL炼金术/多类关系_Python_Sqlalchemy - Fatal编程技术网

Python SQL炼金术/多类关系

Python SQL炼金术/多类关系,python,sqlalchemy,Python,Sqlalchemy,我有个问题。看下面,我需要属性'priced_item'是3个不同类中的一个。但是使用sqlalchemy,我只知道如何与另一个类建立关系。如何在不使用继承的情况下建立与多个类的关系?实现这一目标的最佳方式是什么 最后,我想知道sqlalchemy中创建包含多个类的列表的最佳方法,这在python中是很平常的事情,但是表对该功能的影响很大 谢谢 class QuoteItem(Base, DataObject): __tablename__ = 'quote_item' uui

我有个问题。看下面,我需要属性'priced_item'是3个不同类中的一个。但是使用sqlalchemy,我只知道如何与另一个类建立关系。如何在不使用继承的情况下建立与多个类的关系?实现这一目标的最佳方式是什么

最后,我想知道sqlalchemy中创建包含多个类的列表的最佳方法,这在python中是很平常的事情,但是表对该功能的影响很大

谢谢

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,它支持此类模式,请查看文档中的。

您可能会发现这很有用:您可能会发现这很有用: