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
我想我误解了一些重要且明显的事情,我正在尝试使用 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