2012-03-27 11 views
2

私はSQL Alchemyを使いこなしており、SQLAがselect文を実行する前にいくつかの作業を行う必要があります。そこで、SQLA Eventを使用するのが最善の方法だとわかりましたが、適切なBefore-Selectイベントを見つけることはできません。そこにはありますが、私は見つけるのが貧弱です。Sql錬金術前選択イベント

私のカスタムイベントを書く方法を誰かに教えてもらえませんか?

任意の提案についてはThx。私は私がやりたいことやった よろしく ゲイブ

+0

あなたはそこで何をする必要がありますか?クエリ自体を変更する(いくつかの一般的なフィルタやeager-load dataなど)? – van

+0

:返信のためにvan thx。私がしたいのは、そのテーブルの各選択肢をつかみ、それをDBに送る前に私の小さな変更を与えることです。 –

+1

ここでの「小さな変更」の性質は重要です。シンプルで常に特定のテーブルにあるものであれば、Selectコンストラクトで@compilesを使用することで、しばしば逃げることができます。 ORMにいる場合は、Queryサブクラスも使用できます。http://www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQueryを参照してください。 – zzzeek

答えて

1

だから、しばらく書いていないため申し訳ありませんが、いくつかのしばらく前に。私はそれがエレガントな方法ですが、それは動作しません。だから、

私は私自身のSessionクラスを書いているんでした何:それは同様の問題で苦労誰かを助けること

Session = sessionmaker(engine, class_ = MySession) 

ホープ:

class MySession(Session): 

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

その後、あなたはこのようなあなたのセッションを作成する必要があります:)

よろしくお願いいたします。

Psこの質問に貢献したみなさん、ありがとう。

関連する問題