gpt4 book ai didi

python - 在 SQLAlchemy 中使用连接

转载 作者:行者123 更新时间:2023-11-30 22:07:26 25 4
gpt4 key购买 nike

我有两个表:

class Candidate(Base):
__tablename__ = 'candidates'
id = Column(Integer, primary_key=True)
email = Column(String)
first = Column(String)
last = Column(String)
company = Column(String)
title = Column(String)
linkedin_url = Column(String, unique=True)
role = Column(String)

emails = relationship("Email", back_populates="candidate")

class Email(Base):
__tablename__ = 'emails'
id = Column(Integer, primary_key=True)
candidate_id = Column(Integer, ForeignKey('candidates.id'))
email_id = Column(String, nullable=False)
thread_id = Column(String, nullable=False)
date = Column(String, nullable=False)
subject = Column(String, nullable=False)
to = Column(String, nullable=False)
carbon_copy = Column(String, nullable=False)
from_ = Column(String, nullable=False)
text_body = Column(String, nullable=False)
epoch_time = Column(String, nullable=False)

candidate = relationship("Candidate", back_populates="emails")

我正在尝试在 SQLAlchemy 中编写连接:

q = db_session.query(Candidate).join(Email)

我希望能够执行类似 q.first().email_idq.first().id 的操作,但出现错误AttributeError: 'Candidate' 对象没有属性 'email_id'

当我打印出原始 SQL:print str(q) 它返回 FROM candidates JOIN emails ON candidates.id = emails.candidate_id

这看起来是正确的。

那么为什么当我尝试访问连接表时会出现错误? q.first().id 返回 1q.first().email_id 给出错误。

有什么想法吗?

最佳答案

我想我明白你的问题了。由于 Candidate 和 Email 之间存在一对多关系(意味着一个候选人可以有很多电子邮件),当您访问候选人的 emails 属性时,您实际上是在访问一个列表。

所以而不是

q.first().email_id

你需要使用

for each in q.first().emails:
print each.email_id

关于python - 在 SQLAlchemy 中使用连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174708/

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