我想調用我在PostgreSQL數據庫中創建的函數。我已經看過官方的SQLAlchemy文檔以及這裏的幾個問題,但似乎沒有人解釋如何在SQLAlchemy中設置函數。如何在Flask中使用SQLAlchemy調用數據庫函數?
我確實發現this question,但我不確定如何編譯該函數,正如答案所示。代碼去哪了?當我嘗試將它放入視圖和模型腳本中時出現錯誤。
編輯1(2016年8月11日)
按照社區的要求和需求,這裏都是我離開了細節:
我有一個表叫做書,它的列排列提供關於一般書籍(標題,作者,出版日期......)的信息。
然後我有很多表都是同一種類的列,它們的列包含有關每本書中所有章節(章節名稱,長度,簡短摘要...)的信息。 每本書都有自己的桌子是絕對必要的。我玩過所有章節中的一張大桌子,發現它不適合我的需要,不太講究非常笨拙。
我正在詢問的函數查詢書籍的表格以查找單個書的名稱,並將該書的名稱轉換爲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的知道,可以撥打我有我的數據庫中的功能?我也接受其他建議,以達到同樣的結果。
P.S.我只是遺漏了這些信息,目的是讓我的問題儘可能抽象,不知道論壇的規則要求提出一個非常具體的問題。請原諒我缺乏知識。
怎麼樣[文本SQL](HTTP: //docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql)? – roy
你的功能是做什麼的?你是如何嘗試鏈接的答案?什麼沒有用?請[edit]包含[mcve]。 – davidism