python - 从 SQLAlchemy 上下文管理器返回一个值
问题描述
我正在尝试从我的上下文管理器返回我的 SELECT 查询的值。但是,没有任何内容作为响应返回。如何从上下文管理器/会话中返回选择查询的结果?
@contextmanager
def aperio_session_scope():
"""Provide a transactional scope around a series of operations."""
session = AperioSession()
try:
yield session
session.commit()
except:
session.rollback()
raise
finally:
session.close()
此外,查询类如下所示:
class AperioSlidesAfterDate(object):
def go(self, session):
session.query(Slide).join(Image).filter(Image.scandate > '2018-08-01 00:00:00', Slide.barcodeid.isnot(None))
我按如下方式运行查询:
with aperio_session_scope() as session:
slides = AperioSlidesAfterDate().go(session)
所有这 3 个片段都来自不同的文件,并且我的导入设置正确。没有编译时或运行时异常。的值似乎slides
总是None
。我错过了什么吗?我遵循了 SQLAlchemy 文档中的示例。
如果我这样做:
with aperio_session_scope() as session:
slides = session.query(Slide).join(Image).filter(
Image.scandate > '2018-08-01 00:00:00', Slide.barcodeid.isnot(None))
我得到了结果,但我想按照文档中的预期尝试并使用会话对象。这是范围界定问题吗?或者如果可能的话,我是否只需要以某种方式访问返回值?
谢谢。
解决方案
您忘记了return
以下查询的结果go()
:
class AperioSlidesAfterDate(object):
def go(self, session):
return session.query(Slide).join(Image) ...
# ^^^
推荐阅读
- javascript - 想用next.js取消浏览器的后退按钮
- amazon-vpc - 通过 Direct Connect 网关进行负载平衡
- azure-language-understanding - 需要将 LUIS.ai 集成到电源自动化流程中
- c++ - 简单的 C++ 向下转型不适用于简单的类
- javascript - 使用正则表达式将 Json 拆分为 Key 和 data
- r - 如何在 R 中将“NA”处理为 False
- tensorflow - 你怎么知道你在 TensorFlow 2.0 中使用的是 LSTM 或 GRU 的 CuDNN 版本?
- python - 如何使用 Python 列表中的 SQLAlchemy 更新和/或插入 MySQL 数据库
- google-apps-script - 如何在 Google Scripts 的变量中存储月、日和年?
- php - 在 WordPress 子主题中将 do_shortcode 添加到 printf