我是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")
答案 0 :(得分:0)
该代码几乎是正确的,它需要进行两项更改:
UserMeta
需要一个主键列
id = Column(Integer,primary_key=True)
UserMeta
中的关系定义应引用UserData
的{{1}}属性,而不是users_meta
,该属性不存在。
users
一个小问题- users = relationship("UserData", back_populates="users_meta")
中不需要index=True
,主键将被自动索引。