【问题标题】:SqlAlchemy join on tables with no foreign keysSqlAlchemy 在没有外键的表上连接
【发布时间】:2015-03-10 14:19:42
【问题描述】:

我在 SqlAlchemy 中有两个表

class T1(Record, SqlBase):
    __tablename__ = 'table1'
    __table_args__ = (PrimaryKeyConstraint('column'), {'autoload': True},)

class T2(Record, SqlBase):
    __tablename__ = 'table2'
    __table_args__ = (PrimaryKeyConstraint('column'), {'autoload': True},)

我想在一些共同的列上加入这两个表

session.query(T1).join(session.query(T2), T1.column == T2.column)

但是我遇到了一个错误

InvalidRequestError: Could not find a FROM clause to join from.  Tried joining to 
... but got: Can't find any foreign key relationships 
between 'T1' and 'FromGrouping object'. Perhaps you
 meant to convert the right side to a subquery using alias()?

我该如何解决这个问题?两个表中都没有外键

【问题讨论】:

  • 改用session.query(T1).join(T2, T1.column == T2.column)
  • @van 用于连接多个表 查询将是什么?
  • @SaifaliKaredia:对不起,我不明白这个问题。能否请您提供更多背景信息。
  • @van 如何在没有外键的 3 个表上进行内部联接?
  • @SaifaliKaredia:参见join 文档。您可以使用onclause 参数显式指定JOIN 子句。示例(来自文档):q = session.query(User).join(Address, User.id==Address.user_id)

标签: python sql sqlalchemy


【解决方案1】:

有用Doc

如果两个类都有关系,您可以使用连接,或者您可以编写不带连接的查询

session.query(T1).filter(T1.column == T2.column)

【讨论】:

猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 2016-07-12
  • 2015-08-27
  • 2019-03-09
  • 2018-06-18
  • 2012-05-15
  • 2021-03-08
  • 2021-09-05
相关资源
最近更新 更多