SQLalchemy select 使用 ORM 结果行只包含内存位置

SQLalchemy select using ORM the resulting row contains only memory location

我想我误解了一些重要且明显的事情,我正在尝试使用 SqlAlchemy ORM select 数据库中 table 的一行和 return 值。第一步是获取行并访问它,从那里我认为我很好但是,当我 select 行并尝试调查 returned 的对象时,我发现的只是对象在内存中的地址:<main.UserMap object at 0x000001F65A54B490>,

尝试使用 objprint 调查对象没有提供更多信息,根据我的理解,我很困惑生成的行对象应该表现得像一个元组,所以至少 objprint 应该在其中找到各种条目,即使它可以由于它们的数据类型不同,因此不打印它们。

相关陈述: select(UserMap).where(UserMap.google_auth == '***********************')

更基本的 select(UserMap) 似乎也给出了类似的结果。

table 包含一些字段作为字符串,一些字段作为整数,一些字段采用日期和时间格式,但显然每列只有一种类型。

我正在使用 session.execute,我想避免查询,因为我知道它的功能在 2.x API 中已被弃用,如果我误解了这一点,那么我是很高兴尝试这样做,但仍然想了解我对结果和行对象的误解。

正如我所说,我想我错过了一些重要的东西,但没有意识到什么,据我所知,我正在以与 ORM 文档中所示的方式大致相同的方式执行语句,例如:

>>> stmt = select(User).where(User.name == 'spongebob')
>>> with Session(engine) as session:
...     for row in session.execute(stmt):
...         print(row)

<main.UserMap object at 0x000001F65A54B490> 是 ORM 对象的默认字符串表示形式。您可以使用标准语法检索对象的属性(properties):

me = UserMap(user_name="Gord")
print(me)  # <main.UserMap object at 0x000001F65A54B490>
print(me.user_name)  # Gord