ようSQLAlchemyのクエリのlangに、そのようなドメインを変換するのを助けることができるのpythonは、ここに1つのスタートだ:
私はあなたのEXPRESを書き換えるつもりです接頭辞表記法の観点からは、あなたはおそらく他の場所での演算子を処理するためにいくつかのより具体的な作業のチェックを追加することができ、
test_expression = ['|',('=','name','root'), ('=','role','admin')]
をしかし:オペレータは最初であり、他の値は、次のようにします。
def buildquery(context, expression):
OPERATORS[expression[0]](context, expression[1:])
def build_or(context, args):
return sqlalchemy.or_(*(buildquery(context, arg) for arg in args))
def build_eq(context, args):
colname, value = args
return getattr(context, colname) == value
OPERATORS = {
'|': build_or,
'=': build_eq}
そして、それを使用するあなたがしてクエリを使用するマップされたクラスパスする:
session.query(User).filter(build_query(User, test_expression))
ありませんが、しかし、あなたは1を構築することができます。最近の関連する質問については、http://stackoverflow.com/questions/7411812/how-to-create-literal-based-query-in-sqlalchemyも参照してください。 – van