我想调用我在PostgreSQL数据库中创建的函数。我看过官方的SQLAlchemy文档以及SO上的几个问题,但似乎没有人解释如何在SQLAlchemy中设置功能。
我确实找到了这个问题,但是不确定如何如答案所示编译函数。该代码去哪儿了?当我尝试将其放入视图脚本和模型脚本时,出现错误。
编辑1(8/11/2016)
根据社区的要求和要求,以下是我遗漏的所有详细信息:
我有一个称为书的表,其各列中包含有关一般书的信息(书名,作者,出版日期...)。
然后,我得到了许多同类型的表,它们的列包含有关每本书中所有章节的信息(章节名称,长度,简短摘要...)。每本书都有自己的桌子是绝对必要的。我在所有章节的一张大桌子旁玩耍,发现它不适合我的需求,不必太提起笨拙。
我要查询的功能是查询书的表以获取单个书的名称,并将该书的名称转换为regclass。然后,它向regclass对象查询其所有数据,将所有行作为表返回,就像各个书本表一样,然后退出。这是原始代码:
CREATE OR REPLACE FUNCTION public.get_book(bookName character varying)
RETURNS TABLE(/*columns of individual book table go here*/)
LANGUAGE plpgsql
AS $function$
declare
_tbl regclass;
begin
for _tbl in
select name::regclass
from books
where name=bookName
loop
return query execute '
select * from ' ||_tbl;
end loop;
end;
$function$
此功能已经在命令行和pgAdmin中进行了多次测试。它按预期工作。
我的意图是在我的Flask应用程序中查看一个视图,该视图的路径为@app.route('/book/<string:bookName>')
并在渲染模板之前调用上述函数。确切的视图如下:
@app.route('/book/<string:bookName>')
def book(bookName):
chapterList = /*call function here*/
return render_template('book.html', book=bookName, list=chapterList)
这是我的问题:如何以SQLAlchemy知道并可以调用数据库中具有的函数的方式设置我的应用程序?我也乐于接受其他建议,以达到同样的效果。
PS:我只是省略了这些信息,目的是使我的问题尽可能地抽象,不知道论坛的规则规定了一个非常具体的问题的要求。请原谅我缺乏知识。
如果要在不使用原始sql的情况下执行此操作,则可以func
从sqlalchemy中使用:
from sqlalchemy import func
data = db.session.query(func.your_schema.your_function_name()).all()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句