PostgreSQL 데이터베이스에서 작성한 함수를 호출하고 싶습니다. 공식 SQLAlchemy 문서뿐만 아니라 여기에 몇 가지 질문을 봤는데 아무도 SQLAlchemy에서 함수를 설정하는 방법을 설명하는 것 같습니다.플라스크에서 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에서 여러 번 테스트되었습니다. 그것은 예상대로 작동합니다.
제 의도는 내 플러시 앱에서 경로가 @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. 나는 포럼의 규칙이 매우 구체적인 질문에 대한 요구 사항을 지시한다는 것을 알지 못해 가능한 한 추상적 인 것으로 나의 질문을 지킬 의도로이 정보를 생략했다. 나의 지식 부족을 용서해주십시오. 당신은 원시 SQL없이 수행 할 경우
무엇 [텍스트 SQL (HTTP에 대해 : //docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql)? – roy
당신의 기능은 무엇을합니까? 어떻게 링크 된 답변을 시도 했습니까? 무엇이 효과가 없었습니까? [편집]을 클릭하여 [mcve]를 포함하십시오. – davidism