【发布时间】:2019-05-18 04:24:36
【问题描述】:
我有两张桌子 X 和 Y。
X 有两列 id 和 name, Y 有三列 id, city, country
我需要进行连接查询,并使用 id 获取与其名称对应的城市和国家/地区值。 id 是外键。
我直接在 PostgreSQL 中尝试了这个查询,
select * from x inner join y on x.name = 'xyz'
它给出了准确的结果。但是,虽然在 Python 烧瓶应用程序中使用 sqlalchemy orm 尝试相同的查询,但事实并非如此。我是 Python 和 Flask 框架的新手。我不知道如何实现它。
我在我的模型目录中的一个单独的 python 文件中声明了表定义和序列化函数。
在我的 main.py 文件中,我正在导入该模型并尝试了这种查询,但它不起作用。
from models import x, y
response = x.query.join(y).filter_by(name=name).all()
我收到这样的错误消息,
sqlalchemy.exc.InvalidRequestError
InvalidRequestError:找不到要从中加入的 FROM 子句。尝试加入
<class 'models.y'>,但得到:找不到 'x' 和 'y' 之间的任何外键关系。
【问题讨论】:
-
我对python或sqlachemy不太了解,但对orms有所了解。根据文档和日志输出,您需要在模型中设置关系。 docs.sqlalchemy.org/en/latest/orm/join_conditions.html
标签: python postgresql join flask sqlalchemy