我正在加入两个没有外键的模型:
型号:
Graphics.DrawCurve
查看:
class Users(db.Model):
__tablename__ = "Users"
userName = db.Column(db.String, primary_key=True)
lastLogin = db.Column(db.DateTime)
class TimeOff
__tablename__ = "timeOff"
timeOffID = db.Column(db.Integer, primary_key=True)
userName = db.Column("userName", db.String, db.ForeignKey('appUsers.userName')),
dayWork = db.Column(db.DateTime)
sqlalchemy.exc.InvalidRequestError:找不到要加入的FROM子句。 尝试加入但得到:在TimeOff'之间找不到任何外键关系。和'用户'。
我没有在表
中定义的外键答案 0 :(得分:8)
您需要告诉SQLAlchemy如何加入表。尝试这样的事情:
result = db.session.query(Users).join(TimeOff,Users.userName==TimeOff.userName)
答案 1 :(得分:1)
要改善@Matt Healy的回答,如果您还希望能够访问连接对象上的属性,则可以执行以下操作:
user, timeOff = db.session.query(Users, TimeOff).join(
TimeOff, Users.userName == TimeOff.userName
).first()
然后timeOff.dayWork
等将提供您所需的信息。
答案 2 :(得分:0)
这是一篇旧文章,但我遇到了类似的问题
result = session.query(models.Users).join(models.TimeOff, models.Users.userName == models.TimeOff.userName).all()
使用这种方法,我可以达到第一个对象的功能,即用户,而不是TimeOff。我想知道是否有可能达到次要对象的属性。但我希望这会有所帮助。
答案 3 :(得分:0)
这对我有用, 我有 3 个表,我有所有三个表都唯一的 rtf_id,你必须使用 select_from 关键字来告诉表从左开始。
db_data = dbobj.session.query(A, B, C). \
select_from(A).join(B, B.rtf_id == A.rtf_id). \
join(C, C.rtf_id == A.rtf_id).all()