예전버젼(7.1X이전)의 postgres를 시험해볼 수는 없고 7.1.1에서 내장함수의 형변환을 보면 sum(),avg()등의 함수는 'numeric'으로 잡히는군요
max(),등은 해당필드의 int,또는 int2형으로 잡히구요.
이 numeric형이 python에서 불러들이면 text로 인식하구요
실제로 postgres에서 numeric형은 text형태로(크기무제한) 저장되는걸로 알고 있음니다.
python과 postgres의 변수 사용형태는 다를수 밖에 없고 그에따라 적당히 형변환을 해주어야하는데 현재 postgres에서 제공되는 pg모듈의 형은 딱 4가지뿐입니다.
int8형태도 두쪽에서 모두제공하는형이지만 그냔 int로 처리해버리고 마는군요.
소스들 뒤져보고 있지만 .... 영 딸리네요.
(pgmodule.c) PQftype 함수에서 리턴되는값을 좀더세분화해서 int8,numeric를 받고PyInt_FromLong에서 PyLong_FromLong으로,
PyString_FromString 에서 PyLong_FromPyString으로... 추가하고...
횡설수설 했음니다... 답답해서요
>>김상기 님께서 쓰시길<<
:: 살펴보니, pg 모듈에서는 그런 현상이 나타나는 군요.
:: pg 모듈의 하위 클래스인 pgdb 모듈은 그런 현상이 나타나지는 않는데,
:: 이렇게 된다면, 엄청나게 큰 숫자가 리턴 된다면, 어떻게 될지가 궁금해집니다.
::
:: >>가우 님께서 쓰시길<<
::
:: :: sum()함수의 결과값이 int형이 아닌 string형으로 리턴됨니다.
:: ::
:: :: 결과를 받고나서 int()함수로 꼭변환을 해주셔야함.
:: ::
:: ::
|