이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 결과 : 문서 : 17 : 44.6. 토토 결과 액세스버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

40.3. 데이터베이스 배트맨 토토

PL/Python 언어 모듈은 자동으로 Python을 가져옵니다 호출된 모듈plpy. 기능과 이 모듈의 상수는 Python 코드에서 사용할 수 있습니다. 와 같이plpy.foo. 현재plpy함수를 구현합니다plpy.debug("msg"), plpy.log("msg"), plpy.info("msg"), plpy.notice("msg"), plpy.warning("msg"), plpy.error("msg")plpy.fatal("msg"). 그들은 대부분 다음과 같습니다 전화elog(레벨, "메시지")C 코드에서. plpy.error그리고plpy.fatal실제로 Python 예외 발생 잡히지 않으면 PL/Python 모듈이 호출됩니다.elog(ERROR, 메시지)함수일 때 핸들러는 Python 인터프리터에서 반환됩니다. 멀리뛰기 Python 인터프리터는 아마도 좋지 않을 것입니다.plpy를 올립니다.ERROR("msg")그리고plpy를 올립니다.FATAL("msg")호출과 동일plpy.error그리고plpy.fatal각각.

또한,plpy모듈 라는 두 가지 함수를 제공합니다.실행그리고준비. 전화 중plpy.execute쿼리 문자열과 선택적 제한 인수로 인해 해당 쿼리가 실행되고 결과 개체에 결과가 반환됩니다. 결과 객체 목록 또는 사전 개체를 에뮬레이트합니다. 결과 개체는 다음과 같습니다. 행 번호와 열 이름으로 액세스합니다. 여기에는 이러한 추가 기능이 있습니다. 방법:nrows이는 다음을 반환합니다. 쿼리에서 반환된 행 수 및상태이것은SPI_exec()반환값. 결과 개체는 다음을 수행할 수 있습니다. 수정될 수 있습니다.

예를 들어,

rv = plpy.execute("SELECT * FROM my_table", 5)

다음에서 최대 5개의 행을 반환합니다.my_table. 만일내_테이블열이 있습니다my_column, 다음과 같이 액세스됩니다.

foo = rv[i]["my_column"]

두 번째 기능,plpy.prepare, 준비합니다 쿼리 실행 계획. 쿼리 문자열로 호출되며 매개변수 유형 목록(매개변수 참조가 있는 경우) 쿼리. 예를 들면:

plan = plpy.prepare("SELECT last_name FROM my_users WHERE first_name = $1", [ "text" ])

텍스트은 변수 유형입니다. 통과 예정입니다$1. 준비한 후 진술, 당신은 함수를 사용합니다plpy.execute실행하려면:

rv = plpy.execute(계획, [ "이름" ], 5)

세 번째 인수는 한계이며 선택사항입니다.

현재 버전에서는 데이터베이스 오류가 발생하는 동안 실행 중PL/파이썬함수 해당 기능은 즉시 종료됩니다. 서버; Python을 사용하여 오류 조건을 포착하는 것은 불가능합니다.시도 ... 잡기구조물. 예를 들어, 에 전달된 SQL 문에 구문 오류가 있습니다.plpy.execute호출은 기능을 종료합니다. 이 동작은 향후 릴리스에서 변경될 수 있습니다.

PL/Python 모듈을 사용하여 계획을 준비할 때 자동으로 저장됩니다. SPI 문서 읽기(41장) 이것이 무엇을 의미하는지 설명합니다. 함수 호출 전반에 걸쳐 이를 효과적으로 사용하려면 영구 저장소 사전 중 하나를 사용해야 합니다.SD또는GD(참조섹션 40.1). 에 대한 예:

CREATE FUNCTION 사용savedplan() 반환 트리거 AS '
    SD.has_key("계획")인 경우:
        계획 = SD["계획"]
    그 외:
        계획 = plpy.prepare("SELECT 1")
        SD["계획"] = 계획
    # 나머지 기능
' 언어 plpythonu;