我有一个CTE,它驻留在一个表函数中,需要传递一个参数。然后用
之类的东西调用我需要的数据 SELECT * FROM myThingFunction('e543149c-6589-49c6-b962-bf2503c0e278')
如果可能,我想做的是映射SQLAlchamy模型,以便我可以对返回的记录集应用过滤器,限制等,例如
qry = session.query(Thing).limit(100)
我正在努力的是如何处理参数。我知道我将函数视为一个感觉有点错误的表,因为函数更多是一组复合关系,而不是只映射到一种类型的域对象的表,但我需要以某种方式将这些数据导入Python。
答案 0 :(得分:2)
你见过the recipe for mapping arbitrary selects吗?您可以编写一个工厂方法,该方法返回表示给定参数的查询的类:
def myThingFunction(param):
tmpSelect = select(..)
class tmpCls(Base):
__table__ = tmpSelect
return tmpCls
但是这个食谱下面有一个注释说明创建映射是不必要的。我没有尝试过,但原则上,
session.query(func.myThingFunction("bar")).all()
也可能有用。 (func.foo
动态创建GenericFunction
,请参阅FunctionElement及以下文档。)