2017-09-22 129 views
0

我正在编写一个简单的测试来验证“id”列中的不同值的数量与每个表的行数相匹配。我希望能够访问对象的特定值,但是当我运行代码并尝试打印变量的值时,我可以看到我的对象是一个sqlalchemy.engine.result.ResultProxy对象,位于...,而不是成为人类可读的东西。我一直在SQLAlchemy网站上呆了一个多小时,并且搜索了几个我的问题,但是没有找到我想要的内容。Python/SQLAlchemy,如何访问查询结果

我的代码,用端子输出,低于:

from sqlalchemy import create_engine 
engine = create_engine('postgresql://[email protected]:5432/testload') 
connection = engine.connect() 
id_count = connection.execute('SELECT COUNT(DISTINCT(id)) FROM csv.agencies') 
id_count 
<sqlalchemy.engine.result.ResultProxy object at 0x10357d290> 
+0

请开拓REPL /进口sqlachemy和运行***帮助(sqlalchemy.engine.result.ResultProxy)***有关于ResultProxy结果的大量解释。 – Kyle

回答

1

这是SQLAlchemy的的预期行为。您需要与ResultProxy交互。按SQLAlchemy的的documentation

返回的结果是ResultProxy,它引用一个DBAPI光标,并提供了DBAPI光标的大部分兼容接口的实例。当ResultProxy的所有结果行(如果有)都用尽时,DBAPI游标将被关闭。不返回任何行的ResultProxy,比如UPDATE语句(不带任何返回的行),会在构造时立即释放游标资源。

的ResultProxy API可以让你获取数据:

results = connection.execute('SELECT COUNT(DISTINCT(id)) FROM csv.agencies') 
id_count = results.first()[0] 
+0

谢谢你的答案和链接! –