SQLAlchemy 获取类对象而不是实际结果

Posted

技术标签:

【中文标题】SQLAlchemy 获取类对象而不是实际结果【英文标题】:SQLAlchemy getting a class object instead of actual result 【发布时间】:2022-01-03 08:52:34 【问题描述】:

我正在使用自动映射对现有 Postgres 数据库运行查询。

Base = automap_base()

Base.prepare(engine, reflect=True)

City = Base.classes.city

dm = session.query(City).first()

Output: <sqlalchemy.ext.automap.city at 0x15f7a87b8>

如何设置才能看到表格中的实际结果?

【问题讨论】:

尝试打印dir(dm) @AbdulNiyasPM 它输出一堆方法和列名列表。我使用 dict 来查看实际结果,然后将其转换为 pandas df。有没有标准的方法来处理这个? everything 是一个“类对象”(如果你的意思是一个类的 instance)。确切地说,您期望而不是这个输出? @juanpa.arrivillaga 我明白了,我希望在表格或任何其他格式、列表或字典中查看实际数据。 【参考方案1】:

来自 cmets:

我使用 dict 查看实际结果,然后将其转换为 pandas df。有没有标准的方法来处理这个?

只需使用 pandas 的read_sql_query() 方法:

Base = automap_base()
Base.prepare(autoload_with=engine)
City = Base.classes.city

query = select(City)
df = pd.read_sql_query(query, engine)
print(df)
"""
   id  city_name prov
0   1    Calgary   AB
1   2  Vancouver   BC
"""

【讨论】:

以上是关于SQLAlchemy 获取类对象而不是实际结果的主要内容,如果未能解决你的问题,请参考以下文章

获取时间戳而不是日期时间对象,sqlalchemy python 2.7

Python工具之SQLAlchemy

SQLAlchemy框架用法详解

使用 ID 而不是对象填充 SQLAlchemy 多对多关系

SQLAlchemy基本使用

SQLAlchemy