Postgresql 9.2.24 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.2 : 윈 토토 함수 | up | 42 장. PL/Python -Python Prossural Language | 다음 |
PL/Python 언어 모듈은 파이썬을 자동으로 가져옵니다 호출 된 모듈plpy. 기능과 이 모듈의 상수는 파이썬 코드에서 사용할 수 있습니다. 처럼plpy.foo.
theplpy모듈은 여러 가지를 제공합니다 메이저 토토 사이트베이스 명령 실행 기능 :
execute
(쿼리[,Max-Rows])전화plpy.execute
쿼리 문자열 및 선택적 행 제한 인수 포함
해당 쿼리가 실행되고 결과가 메이저 토토 사이트됩니다.
결과 객체에서.
결과 객체는 목록 또는 사전을 모방합니다 물체. 결과 객체는 행 번호로 메이저 토토 사이트 할 수 있습니다 및 열 이름. 예를 들어:
rv = plpy.execute ( "select * from my_table", 5)
최대 5 행까지my_table. 만약에my_table열이 있습니다my_column, 그것은 다음과 같이 액세스 할 것입니다.
foo = rv [i] [ "my_column"]
메이저 토토 사이트 된 행의 수는
내장Len
기능.
결과 객체에는 다음과 같은 추가 방법이 있습니다.
nrows
()명령. 이것이 반드시 동일하지는 않습니다 행의 수가 메이저 토토 사이트됩니다. 예를 들어, an업메이저 토토 사이트트명령이 설정됩니다 이 값이지만 행을 메이저 토토 사이트하지는 않습니다 (메이저 토토 사이트사용).
상태
()thespi_execute ()
메이저 토토 사이트 값.
colnames
()Coltypes
()ColtypMods
()열 이름 목록, 열 목록을 메이저 토토 사이트합니다 유형 OID 및 유형 별 유형 수정 자 목록 열의 경우 각각.
이 방법은 호출 될 때 예외를 제기합니다 생산하지 않은 명령의 결과 객체 결과 세트 (예 :업메이저 토토 사이트트없음메이저 토토 사이트또는드롭 테이블. 그러나 괜찮습니다 이 방법을 포함하는 결과 세트 에서이 방법을 사용합니다 제로 행.
결과 객체를 수정할 수 있습니다.
plpy.execute전체 결과를 유발합니다 메모리로 읽도록 설정하십시오. 해당 기능 만 사용하십시오 결과 세트가 비교적 작은. 과도한 메모리 사용을 위험에 빠뜨리고 싶지 않은 경우 큰 결과를 가져올 때 사용plpy.cursor보다는plpy.execute.
준비
(쿼리[,Argtypes])execute
(plan[,인수[,Max-Rows])plpy.prepare
준비
쿼리에 대한 실행 계획. 쿼리와 함께 호출됩니다
문자열 및 매개 변수 유형 목록이있는 경우
쿼리의 매개 변수 참조. 예를 들어:
plan = ply.prepare ( "first_name = $ 1", [ "text"].
텍스트는 유형입니다 당신이 통과 할 변수$ 1. 두 번째 인수는 선택 사항입니다 매개 변수를 쿼리로 전달하고 싶지 않습니다.
진술을 준비한 후에는 변형을 사용합니다.
기능plpy.execute
to
실행 :
rv = plpy.execute (plan, [ "name"], 5)
계획을 첫 번째 인수로 전달합니다 (대신 대신 쿼리 문자열) 및 대체 할 값 목록 두 번째 인수로서의 쿼리. 두 번째 논쟁은입니다 쿼리가 매개 변수를 기대하지 않는 경우 선택 사항. 그만큼 세 번째 인수는 이전과 같은 선택적 행 제한입니다.
쿼리 매개 변수 및 결과 행 필드가 변환됩니다 postgresql과 python 데이터 유형 사이에 설명 된대로사설 토토 : 문서 : 9.2 : 데이터 값. 그만큼 예외는 현재 복합 유형이 아닙니다 지원 : 쿼리 매개 변수로 거부됩니다 쿼리에 나타날 때 문자열로 변환됩니다 결과. 후자의 문제에 대한 해결 방법으로 쿼리 복합 유형이되도록 때때로 다시 작성할 수 있습니다 결과는 필드가 아닌 결과 행으로 나타납니다. 결과 행. 또는 결과 문자열이 될 수 있습니다 손으로 분리되지만이 접근법은 미래가 방해받지 않기 때문에 권장됩니다.
PL/Python 모듈 IT를 사용하여 계획을 준비 할 때 자동으로 저장됩니다. SPI 문서를 읽으십시오 (윈 토토 : 문서 : 9.2 : 윈 토토 프로그래밍 인터페이스)에 대한 설명 이것이 의미하는 바. 이것을 효과적으로 사용하기 위해 기능 호출을 통해 하나는 하나를 사용해야합니다. 영구 스토리지 사전SD또는gd(참조PostgreSQL : 문서 : 9.2 : 토토 사이트 순위 공유). 을 위한 예:
함수 생성 audavedPlan ()은 트리거를 $$로 메이저 토토 사이트합니다 SD에서 "계획"인 경우 : plan = sd [ "Plan"] 또 다른: plan = ply.prepare ( "Select 1") sd [ "plan"] = 계획 # 나머지 기능 $$ 언어 plythonu;
커서
(쿼리)커서
(plan[,인수])theplpy.cursor함수 와 동일한 주장을 수락합니다.plpy.execute(행 제한 제외) 커서 객체를 메이저 토토 사이트하여 처리 할 수 있습니다. 작은 덩어리에서 큰 결과 세트. 와 마찬가지로plpy.execute, 쿼리 문자열 또는 a 인수 목록과 함께 대상을 계획하십시오. 사용된.
커서 객체는 a를 제공합니다.Fetch정수를 받아들이는 메소드 매개 변수 및 결과 객체를 메이저 토토 사이트합니다. 전화 할 때마다Fetch, 메이저 토토 사이트 된 객체는 의지합니다 다음 행의 배치를 포함하며 매개 변수 값. 모든 행이 소진되면Fetch빈 결과를 메이저 토토 사이트하기 시작합니다 물체. 커서 객체도 제공합니다반복자 인터페이스, 1 행을 산출합니다 모든 행이 소진 될 때까지 시간. 데이터는 그것을 가져 왔습니다 웨이는 결과 객체로 메이저 토토 사이트되지 않고 오히려 사전, 각 사전은 단일에 해당합니다 결과 행.
대규모에서 메이저 토토 사이트를 처리하는 두 가지 방법의 예 테이블은 :
함수 만들기 count_odd_iterator ()는 정수를 $$로 메이저 토토 사이트합니다 홀수 = 0 plpy.cursor의 행의 경우 ( "largetable에서 num을 선택하십시오") : 행 [ 'num'] % 2 인 경우 : 홀수 += 1 홀수를 메이저 토토 사이트하십시오 $$ 언어 plpythonu; COUNTE COUNT_ODD_FETCH (Batch_Size Integer)는 정수를 $$로 메이저 토토 사이트합니다 홀수 = 0 cursor = plpy.cursor ( "largetable에서 num을 선택") 사실이지만 : 행 = cursor.fetch (batch_size) 행이 아닌 경우 : 부서지다 행으로 줄 : 행 [ 'num'] % 2 인 경우 : 홀수 += 1 홀수를 메이저 토토 사이트하십시오 $$ 언어 plpythonu; 함수 count_odd_prepared () 정수를 $$로 메이저 토토 사이트합니다 홀수 = 0 plan = ply.prepare ( "num % $ 1 < 0", [ "Integer"])에서 largetable에서 num을 선택하십시오) 행 = list (ply.cursor (plan, [2])) 리턴 렌 (행) $$ 언어 plythonu;
커서가 자동으로 배치됩니다. 하지만 원한다면 커서가 보유한 모든 리소스를 명시 적으로 공개하려면 사용하십시오. 그만큼닫기메소드. 일단 문을 닫으면 a 커서는 더 이상 가져올 수 없습니다.
팁 :|plpy.cursorDB-API와 함께 에 의해 정의 된 커서Python Database API 사양. 그들 공통점을 제외하고는 공통점이 없습니다 이름.
데이터베이스에 메이저 토토 사이트하는 기능 오류가 발생할 수 있습니다.
이로 인해 그들이 중단하고 예외를 제기하게됩니다. 둘 다plpy.execute
및plpy.prepare
a의 인스턴스를 올릴 수 있습니다
의 서브 클래스plpy.spierror기본값은 함수를 종료합니다. 이 오류는 처리 할 수 있습니다
다른 파이썬 예외와 마찬가지로 사용하여시도/제외구성. 예를 들어:
기능 작성 try_adding_joe () 텍스트를 $$로 메이저 토토 사이트합니다 노력하다: plpy.execute ( "사용자에 삽입 (사용자 이름) 값 ( 'joe')") plpy.spierror를 제외하고 : "무언가가 잘못되었다"는 메이저 토토 사이트 또 다른: "Joe Add"메이저 토토 사이트 $$ 언어 plythonu;
제기되는 예외의 실제 클래스는 해당합니다 오류를 일으킨 특정 조건에. 참조표 A-1가능한 조건 목록. 모듈plpy.spiexceptions예외 클래스를 정의합니다 각각PostgreSQL조건, 조건 이름에서 이름을 도출합니다. 예를 들어,division_by_zeroDivisionByzero, 고유 _violation독창적 인 범위, fdw_errorfdwerror등. 이러한 각 예외 클래스는에서 물려받습니다.Spierror. 이것 분리하면 특정 오류를보다 쉽게 처리 할 수 있습니다 사례:
함수 생성 insert_fraction (숫자 int, denominator int) 텍스트를 $$로 메이저 토토 사이트합니다. plpy import spiexceptions에서 노력하다: plan = ply.prepare ( "FRAC (Fractions) 값 ($ 1 / $ 2)", [ "int", "int"])))) plpy.execute (plan, [숫자, 분모]) spiexceptions.divisionbyzero : "분모는 0과 같을 수 없다"는 메이저 토토 사이트 spiexections 제외. "이미 그 분수가있다"는 메이저 토토 사이트 plpy.spierror를 제외하고 E : "기타 오류, sqlstate % s" % e.sqlstate를 메이저 토토 사이트합니다 또 다른: "분수 삽입"메이저 토토 사이트 $$ 언어 plythonu;
plpy.spiexceptions모듈 상속Spierror, an제외조항 처리는 그것을 잡을 것입니다 데이터베이스 메이저 토토 사이트 오류.
다른 오류를 처리하는 대체 방법으로 조건, 당신은를 잡을 수 있습니다Spierror예외 및 내부의 특정 오류 조건을 결정하십시오제외sqlstate예외의 속성 물체. 이 속성은를 포함하는 문자열 값입니다."Sqlstate"오류 코드. 이 접근법 거의 동일한 기능을 제공