gpt4 book ai didi

python - SQLAlchemy:一对一关系对象创建问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:17 24 4
gpt4 key购买 nike

我是 SQLAlchemy 的新手,我试图运行其文档 Basic Relationship Patterns - One to One Relationship 中给出的示例。然而,当我尝试实例化 Parent 类时,我遇到了麻烦。

基本上,我所拥有的是:

class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, back_populates="parent")

class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Child", back_populates="child")

p1 = Parent()

这些表是由 .tables 在 sqlite> 提示符下创建并列出的,但在 p1 = Parent() 行我收到以下内容:

sqlalchemy.exc.ArgumentError: reverse_property 'parent' on relationship Parent.child references relationship Child.parent, which does not reference mapper Mapper|Parent|parent

对于一对多关系,这种情况不会发生,对于这段代码,我按照预期打印出 [ ]None :

class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)

addresses = relationship("Address", back_populates="user")

class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('user.id'))

user = relationship("User", back_populates="addresses")


u1 = User()
a1 = Address()

print(u1.addresses)
print(a1.user_id)

所以,我不太明白 SQLAlchemy 错误消息试图告诉我什么。

有人可以帮忙吗?

最佳答案

好的,文档代码有一个明显的错误。我发布此内容是为了防止其他人遇到同样的问题。

基本上,Child类中的关系线必须是到Parent类,并且不是Child strong> 类本身,如文档中所示。

此代码已更正并按预期工作(标记为修改部分):

class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, back_populates="parent")

class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="child")
^^^^^^
p1 = Parent()
c1 = Child()

print(p1.id)
print(c1.parent_id)

按预期打印出 NoneNone

仅此而已!

关于python - SQLAlchemy:一对一关系对象创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com