Events 选择事件之前的Sql炼金术

Events 选择事件之前的Sql炼金术,events,select,sqlalchemy,Events,Select,Sqlalchemy,我正在玩SQL炼金术,我需要在SQLA执行select语句之前做一些工作。所以我发现最好的方法是使用SQLA事件,但我找不到合适的before select事件。它就在那儿,但我找不到 如果没有,有人能告诉我如何编写自定义事件吗 谢谢你的建议。 顺致敬意, Gabe很抱歉有一段时间没有写信,但不久前我做了我想做的事。我不知道这是否是一个优雅的方式,但它的工作 所以我写的是我自己的课程: class MySession(Session): def execute(self, clause

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

如果没有,有人能告诉我如何编写自定义事件吗

谢谢你的建议。 顺致敬意,
Gabe

很抱歉有一段时间没有写信,但不久前我做了我想做的事。我不知道这是否是一个优雅的方式,但它的工作

所以我写的是我自己的课程:

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)
希望它能帮助那些在类似问题上挣扎的人:)

问候


另外,感谢所有在这个问题上做出贡献的人。

你需要在那里做什么样的工作?修改查询本身(如某些常规筛选器或加载某些数据)?:van thx以获取答复。我想做的是抓取该表上的每个select,并在将其发送到数据库之前对其进行一些修改。这里的“小修改”的性质很重要。通常,如果@compiles是简单的并且总是在某个表上,那么您可以在Select构造上使用@compiles。如果您在ORM中,也可以使用查询子类,请参阅