SQLAlchemy的属性错误

时间:2018-07-09 23:58:06

标签: python sqlalchemy

我正在尝试使用SQLAlchemy提取某些数据。在这种情况下,它用于从“个人档案”类中存储的人物列表中获取年龄。但是,这样做时出现错误,指出:“地图”对象没有属性“查询”。我尝试过其他各种方法,但是仍然会导致各种属性错误,这使我相信我没有正确连接或正确设置它?

profile_db = map(
  lambda uri: sessionmaker(bind=create_engine(uri), autoflush=True)(),
  [PROFILE_URI]
)

class pull_age(object):
  def on_get(self, req, res):
    person_age = profile_db.query(Profile).filter(Profile.id == req).first
    res.json = {'age of person': person_age}

1 个答案:

答案 0 :(得分:0)

AttributeError的特定原因是您要向map分配一个profile_db对象,然后尝试将其用作sqlalchemy Session实例。 map对象仅用于对将函数应用于可迭代对象的结果进行迭代,因此自然没有query方法,该方法会导致异常。要获得结果Session类,您必须迭代map对象。您也不会在示例代码中的任何地方实例化会话。

更大的问题是,我不确定您为什么要使用map()。您似乎试图用一个sessionmaker来调用uri一次,那么为什么不直接调用它并传递uri呢? sqlalchemy docs提供了使用sessionmaker的基本示例。遵循该示例,我相信您可以执行以下操作:

# Create configured session class
Session = sessionmaker(bind=create_engine(CLIENT_URI), autoflush=True)

# Create new session and do query
session = Session()
some_profile = session.query(Profile).filter(Profile.id == req).first()