sqlalchemy复制关系集合的内容

时间:2015-01-18 00:51:01

标签: python collections reference sqlalchemy relationship

我有一张有关系的桌子。它看起来像这样:

class User(Base)
    userId = Column(TEXT, primary_key=True)

    products = relationship('Products', backref=backref('Products')) 

加载后,我最终得到一个附加到User对象的集合,其中包含与该用户相关的所有产品。大!正是我想要的!然后我尝试将此集合从一个用户复制到另一个用户。这失败了。当我尝试将第二个用户的引用设置为第一个集合时,它成功,但它删除了第一个用户的引用!这对我来说完全没有意义。它看起来像下面这样:

user1.products
>>>> InstrumentedList[product1, product2]
user2.products
>>>> InstrumentedList[]

user2.products = user1.products

user1.products
>>>>[]
user2.products
>>>>[product1, product2]

这似乎违反了我所知道的关于引用如何在python中工作的一切。对集合的引用的赋值不应影响其他现有引用。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

我在这里想出了问题。问题是我试图在多对多关系上下文中分配具有一对多关系的对象。产品只能有一个用户,因此当用户将产品分配给用户时,将删除之前的关系。在集合中表示它的方式使得这非常令人困惑。