如何解决sqlalchemy一对一关系真实示例
我是sqlalchemy的新手。我阅读了很多指南,但未能复制。 我需要建立一对一关系,但我失败了(每个用户都有一个相关的元表来区分数据和信息)。 这是我当前的损坏代码。
class UserData(Base):
__tablename__ = "users"
user_id = Column(Integer,primary_key=True,index=True)
age = Column(Integer,index=True)
first_name = Column(String,index=True)
last_name = Column(String,index=True)
country = Column(String,index=True)
city = Column(String,index=True)
comment = Column(String,index=True)
users_meta = relationship("UserMeta",uselist=False,back_populates="users")
class UserMeta(Base):
__tablename__ = "users_meta"
email = Column(String,unique=True,index=True)
hashed_password = Column(String)
is_active = Column(Boolean,default=True)
user_id = Column(Integer,ForeignKey('users.user_id'))
users = relationship("UserData",back_populates="users")
解决方法
该代码几乎是正确的,它需要进行两项更改:
-
UserMeta
需要一个主键列id = Column(Integer,primary_key=True)
-
UserMeta
中的关系定义应引用UserData
的{{1}}属性,而不是users_meta
,该属性不存在。users
一个小问题- users = relationship("UserData",back_populates="users_meta")
中不需要index=True
,主键将被自动索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。