【发布时间】:2019-07-11 06:12:28
【问题描述】:
我正在为我的 Flask webapp 使用 Flask-SQLAlchemy (flask_sqlalchemy==2.3.2)。 对于普通的表查询,它已经完美地执行了,但现在我正在过渡到将一些逻辑放入 SQL 视图中,而 SQLAlchemy 没有捕获完整的结果。
这是我的具体例子:
SQL 视图view_ticket_counts:
CREATE VIEW view_ticket_counts AS
SELECT event_id, price_id, COUNT(1) AS ticket_count FROM public.tickets
GROUP BY event_id, price_id
当我使用 pgAdmin 将其作为普通 SQL 查询运行时:
SELECT * FROM view_ticket_counts WHERE event_id=1
我得到了结果:
|event_id|price_id|ticket_count|
| 1 | 1 | 3 |
| 1 | 2 | 1 |
但是,如果我像这样运行 python SQLAlchemy 查询:
ticket_counts = ViewTicketCounts.query.filter_by(event_id=1).all()
for tc in ticket_counts:
print(tc.event_id, tc.price_id, tc.ticket_count)
它只打印一个结果:1 1 3
因此,出于某种原因,SQLAlchemy 查询或实现仅获取第一个元素,即使使用 .all()。
为了完成,这是我的视图模型类:
class ViewTicketCounts(db.Model):
event_id = db.Column(BigInteger, primary_key=True)
price_id = db.Column(BigInteger)
ticket_count = db.Column(BigInteger)
【问题讨论】:
标签: python postgresql sqlalchemy