Python 烧瓶SQLAlchemy外套带三张桌子
我试图使用SQLAlchemy中的outerjoin()连接三个表,但是当我尝试我认为应该可以工作的查询时,它抛出以下错误:Python 烧瓶SQLAlchemy外套带三张桌子,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我试图使用SQLAlchemy中的outerjoin()连接三个表,但是当我尝试我认为应该可以工作的查询时,它抛出以下错误: 1054, "Unknown column 'articles.id' in 'on clause'" 我相信通过使用ORM引用可以以更简单的方式完成,但目前我正在尝试找出如何在没有ORM引用的情况下实现这一点 下面是表格和查询。我还从SQLAlchemy导入和 class User(db.Model): id = db.Column(db.Integer, p
1054, "Unknown column 'articles.id' in 'on clause'"
我相信通过使用ORM引用可以以更简单的方式完成,但目前我正在尝试找出如何在没有ORM引用的情况下实现这一点
下面是表格和查询。我还从SQLAlchemy导入和
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True, nullable=False)
class Articles(db.Model):
id = db.Column(db.Integer, primary_key=True)
article_name = db.Column(db.String(100), unique=True, nullable=False)
class ReadArticles(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
article_id = db.Column(db.Integer, db.ForeignKey('articles.id'), nullable=False)
以及查询:
r = db.session.query(Articles, User, ReadArticles).outerjoin(ReadArticles,
and_(User.id == ReadArticles.user_id, Articles.id == ReadArticles.article_id)).all()
有没有人遇到过这样的情况,或者可以告诉我怎么看我做错了什么
谢谢 希望这将有助于将来遇到类似问题的人 我在没有和的情况下尝试了它,并稍微修改了查询,这就是有效的方法,left/outer正确地连接了所有三个表:
q = db.session.query(Articles, User, ReadArticles).filter(User.id == 1).outerjoin(ReadArticles, ReadArticles.article_id == Articles.id).all()
要使其更具可读性,请执行以下操作:
q = db.session.query(Articles, User, ReadArticles)
q = q.filter(User.id == 1).outerjoin(ReadArticles,
ReadArticles.article_id == Articles.id).all()
这将在我上面概述的ORM类中的所有三个表之间执行适当的左/外连接(至少使用MySQL DB)