我正在编写一个简单的测试来验证“id”列中不同值的数量是否与每个表的行数相匹配。我希望能够访问对象的特定值,但是当我运行代码并尝试打印我的变量的值时,我可以看到我的对象是...的sqlalchemy.engine.result.ResultProxy对象,而不是人类可读的东西。我已经在SQLAlchemy网站上工作了一个多小时,并且搜索了我的问题的几个排列,但是没有找到我要找的东西。
我的代码,终端输出,如下:
from sqlalchemy import create_engine
engine = create_engine('postgresql://kyle.pekosh@localhost: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 :(得分:3)
这是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]