繁体   English   中英

Psycopg2或SQLAlchemy中的多个SELECT

[英]Multiple SELECTs in Psycopg2 or SQLAlchemy

我想一次执行多个SELECT语句,就像我一样

echo "SELECT * FROM x; SELECT * FROM y;" | psql

所以我只向数据库发送一次,并立即收到所有结果。

用SQLAlchemy做它会很完美,但它似乎不受支持(不是吗?)。

我想我可能会重新实现SQLAlchemy的某些部分来获取该功能,但我也没有在psycopg2中找到解决此问题的方法 - 执行两个用分号分隔的查询只会得到最后一个查询的结果。

那么,是否可以使用SQLAlchemy(这将是完美的)或psycopg2(这也可以)这样做?

巴托斯 - 我面临着类似的问题,并在两年前遇到了你的问题。 解决这个问题的一种方法可能是使用Postgres json支持。 你可以做的是构造两个选择查询,将行输出转换为json,将它们组合在一起然后用python或你正在使用的任何语言进行解码。 这将数据一次往返数据库。

您可以使用postgres可用的其他json构造函数,例如row_to_jsonhttp//www.postgresql.org/docs/9.3/static/functions-json.html

SELECT to_json((a, b, c))
FROM x

UNION ALL

SELECT to_json((d, e, f, g, h, i))
FROM y

希望有所帮助

在您的示例中,运行两个独立查询。 这不是炼金术或psycopg的特征。 纯粹的python:

query1 = s.query(x).all()
query2 = s.query(y).all()
out = query1, query2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM