我正在编写一个简单的测试来验证“id”列中不同值的数量与每个表的行数匹配。我期望能够访问对象的特定值,但是当我运行代码并尝试打印变量的值时,我可以看到我的对象是一个 sqlalchemy.engine.result.ResultProxy 对象,位于...,而不是人类可读的东西。我已经在 SQLAlchemy 网站上呆了一个多小时,并用 google 搜索了我的问题的几种排列,但没有找到我要找的东西。
我的代码(带有终端输出)如下:
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>
这是 SQLAlchemy 的预期行为。您需要与 ResultProxy 交互。根据 SQLAlchemy 的文档 http://docs.sqlalchemy.org/en/rel_1_1/core/connections.html:
返回的结果是 ResultProxy 的实例,它引用 DBAPI 游标并提供与 DBAPI 游标很大程度上兼容的接口。当 DBAPI 游标的所有结果行(如果有)耗尽时,ResultProxy 将关闭 DBAPI 游标。不返回任何行的 ResultProxy(例如 UPDATE 语句(不返回任何行))会在构造后立即释放游标资源。
结果代理API http://docs.sqlalchemy.org/en/rel_1_1/core/connections.html#sqlalchemy.engine.ResultProxy允许您获取数据:
results = connection.execute('SELECT COUNT(DISTINCT(id)) FROM csv.agencies')
id_count = results.first()[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)