我正在尝试打印已执行的查询以及PostgreSQL上的查询结果。我有简单的ant sql任务,使用标准的postgresql JDBC驱动程序。
>>> import requests
>>> from pprint import pprint
>>> r = requests.get('http://www.reddit.com/reddits.json', headers= {'User-Agent': 'me'})
>>> data = r.json()
>>> pprint(data.keys())
script.sql仅包含
<?xml version="1.0"?>
<project name="Ant SQL task" default="sql">
<target name="sql">
<echo>Ant SQL task</echo>
<sql
driver="org.postgresql.Driver"
url="jdbc:postgresql://hostname:port/database"
userid="user"
password="password"
src="script.sql"
print="yes"
>
</sql>
</target>
</project>
我收到了这个输出:
select 1 as test;
我想在输出中打印select查询,如下所示:
info:
[sql] Executing resource: script.sql
[sql] test
[sql] 1
[sql]
[sql] 0 rows affected
[sql] 1 of 1 SQL statements executed successfully
有没有办法在输出中包含选择查询?
答案 0 :(得分:0)
1。)为jdbc设置loglevel为DEBUG(2)。除了现在你的日志文件中没有太少的信息,但是太多了。
2.。)稍微附加您的查询:
SELECT 1 as foo, (SELECT query FROM pg_stat_activity);
foo | query
-----+--------------------------------------------------------
1 | SELECT 1 as foo, (SELECT query FROM pg_stat_activity);
(1 row)
请注意,这将为您提供所有正在运行的查询,而不仅仅是当前查询。您可以通过pg_stat_activity
中的众多列之一缩小范围,但除非这是一个繁忙的系统,否则这可能是不必要的。如果您决定这样做,请在连接参数中设置ApplicationName
。
3。)向script.sql
添加行,手动重复下一个查询:
SELECT 'SELECT 1;';
SELECT 1;
SELECT 'SELECT 2;';
SELECT 2;
4。)抛弃ant sql模块并使用exec代替运行psql -e -f script.sql
:
SELECT 1;
?column?
----------
1
(1 row)
您可以使用-P footer=OFF
省略行数。