gpt4 book ai didi

python - SQL从BEGIN中获取数据; ...;结尾;在 python 中阻止

转载 作者:行者123 更新时间:2023-11-29 12:01:23 27 4
gpt4 key购买 nike

我想通过将它们放在 BEGIN; END; 之间来同时运行许多选择查询。我尝试了以下方法:

cur = connection.cursor()
cur.execute("""
BEGIN;
SELECT ...;
END;""")
res = cur.fetchall()

但是,我得到了错误:

psycopg2.ProgrammingError: no results to fetch

我怎样才能真正以这种方式获取数据?

同样,如果我连续有很多选择,我只会从最新的选择中获取数据。有没有办法从它们中获取数据?

最佳答案

Postgresql 实际上不支持从单个命令返回多个结果集。如果将此输入传递给 psql:

BEGIN;
SELECT ...;
END;

它将在客户端拆分并实际执行三个语句,只有第二个语句返回结果集。

“BEGIN”和“END”是用于开始/完成事务的 SQL 级命令。 (执行此操作可能有一个较低级别的协议(protocol),但我不记得了)。您可能不想直接发出它们,而是让您的驱动程序 (psycopg2) 处理它。例如,对于 Perl 的 DBI,我在连接时指定 AutoCommit=>0,它会在我的第一个命令之前隐式发出“BEGIN”;然后当我明确调用 $dbh->commit 时“结束”(或“提交”等);我猜 Python 的 DB-API 是这样工作的,因为 JDBC 等其他系统也是如此......

关于python - SQL从BEGIN中获取数据; ...;结尾;在 python 中阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com