【问题标题】:Sql Alchemy before-select eventSql Alchemy 选择前事件
【发布时间】:2012-05-06 15:08:01
【问题描述】:

我正在玩 SQL Alchemy,我需要在 SQLA 执行 select 语句之前做一些工作。所以我发现最好的方法是使用 SQLA Event,但我找不到合适的 before-select 事件。它在那里,但我很难找到。

如果它不存在,谁能告诉我如何编写我的自定义事件?

感谢您的任何建议。 此致 加布

【问题讨论】:

  • 你需要在那里做什么样的工作?修改查询本身(如一些通用过滤器或预先加载一些数据)?
  • :van 谢谢回复。我想要做的是抓取该表上的每个选择并在将其发送到 DB 之前对其进行一些修改
  • 这里“小修改”的性质很重要。通常,您可以在 Select 构造上使用 @compiles,如果它很简单并且总是在某个表上的话。如果您在 ORM 中,也可以使用 Query 子类,请参阅sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery

标签: events select sqlalchemy


【解决方案1】:

很抱歉有一段时间没有写,但不久前我做了我想做的事。我不认为这是一种优雅的方式,但它确实有效。

所以我所做的就是编写自己的 Session 类:

class MySession(Session):

    def execute(self, clause, params=None, mapper=None, **kw):
        # Your magic with clause here
        return Session.execute(self, clause, params, mapper)

然后你需要像这样创建你的会话:

Session = sessionmaker(engine, class_ = MySession)

希望它能帮助遇到类似问题的人:)

问候

附:感谢所有为这个问题做出贡献的人。

【讨论】:

    猜你喜欢
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多