Flask SqlAlchemy加入两个没有外键MYSQL的模型

use*_*852 6 python mysql flask-sqlalchemy

我加入两个没有外键的模型:

楷模:

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)
Run Code Online (Sandbox Code Playgroud)

视图:

result = db.session.query(models.Users).join(models.TimeOff)
Run Code Online (Sandbox Code Playgroud)

sqlalchemy.exc.InvalidRequestError:找不到要加入的FROM子句.尝试加入但得到:找不到'TimeOff'和'Users'之间的任何外键关系.

我没有在表中定义的外键

Mat*_*aly 9

您需要告诉SQLAlchemy如何连接表.尝试这样的事情:

result = db.session.query(Users).join(TimeOff,Users.userName==TimeOff.userName)
Run Code Online (Sandbox Code Playgroud)

  • 但是如何访问`TimeOff`的属性呢? (7认同)

Awa*_*ain 5

为了改进@Matt Healy的答案,如果您还希望能够访问连接对象上的属性,您可以执行以下操作:

user, timeOff = db.session.query(Users, TimeOff).join(
    TimeOff, Users.userName == TimeOff.userName
).first()
Run Code Online (Sandbox Code Playgroud)

然后timeOff.dayWork等会给出你需要的信息。