Python 에서 Tajo 사용하기 #2 Query 결과값 중 숫자를 연산에 사용하기



Query 를 실행했다 그리고


이전 포스팅 마지막에 실행한 쿼리를 보자.

query = "select * from table1"
cur.execute(query)
result = cur.fetchall()

결과를 python 에서 사용해보자.

for each in result:
  print each[0] / each[1]

이런 경우 아래와 같은 Error 문구를 볼 수 있다.

TypeError: unsupported operand type(s) for /: 'java.lang.Long' and 'java.lang.Long'

문제는


문제는 query 의 결과값이 숫자인 경우 아래와 같은 형식으로 리턴되기 때문이다.

print type(each[2])
<class 'jpype._jclass.java.lang.Long'>

해결해보자


사실 해결책은 간단하다. 결국 TAJO 의 결과 값이 JDBC 를 통해서 오기 때문인데 .value 로 그 값을 받아올 수 있다.

print type(each[2].value)
<type 'long'>

첫 코드를 수정해보자.

for each in result:
  print each[0].value / each[1].value