7. PYTHON-API 사용법
7.1. 개요
7.1.1. API 버전
IRIS 2.1에서 사용되는 PYTHON API는 버전은 mobigen-iris-python27-2.1.0.zip 파일이며, 다른 버전에서 사용중인 API와는 호환이 안될 수 있습니다.
7.1.2. PYTHON 버전 및 설정 방법
API를 사용하기 위해서는 python 2.7 버전에서 사용해야 합니다. (python3.6의 경우 mobigen-iris-python36-2.1.0.zip 파일 사용)
제공되는 파일을 PYTHONPATH 에 설정하여 사용하시면 됩니다.
7.1.3. 지원 쿼리
API에서 지원하는 쿼리의 종류는 다음과 같습니다. - CREATE TABLE - CREATE INDEX - INSERT - UPDATE - DELETE - LOAD - SELECT - DROP INDEX - DROP TABLE
7.2. 기본 사용법
이 장에서는 쿼리를 사용하기 위해 API를 이용한 IRIS의 접속 방법 및 예제 코드를 설명 합니다.
7.2.1. 기본 구조
import API.M6 as M6
conn = M6.Connection({master_ip}:{port}, {user_id}, {passwd}, Database={database_name}, Direct=False)
c = conn.Cursor()
query = 'query syntax';
result = c.Execute2(query)
print result
c.Close()
conn.close()
7.2.2. MASTER_IP
IP는 IRIS의 Master IP를 의미한다.
7.2.3. PORT
IRIS에서 사용하는 Port는 일반 접속, Direct접속에 따라 다르게 설정을 해야 하며, 기본적인 Port는 다음과 같다.
- 일반 접속
5050: 일반 접속을 사용할 경우에 사용하는 Port
- Direct접속
5000 : Direct접속을 사용할 경우에 사용되는 Port
Direct접속을 시도할 경우에는 M6.Connection의 Direct 옵션을 True로 해주어야 합니다.
7.2.4. database name
접속하고자 하는 database name을 설정합니다.
7.3. 예제코드
모든 쿼리들은 Exception이 발생하지 않을 경우 성공으로 간주합니다.
7.3.1. CREATE[table,index]/UPDATE/INSERT/DELETE/DROP[table,index]
query = 'query syntax';
result = c.Execute2(query)
print result
7.3.2. SELECT
q = "select * from LOCAL_TEST_TABLE;"
c.Execute2(q)
for row in c:
print row
cursor 를 이용하여 하나의 레코드씩 fetch를 받으면 됩니다.
7.3.3. LOAD
LOAD에 성공할 경우 +OK SUCCESS. success count : 4 와 같은 결과를 얻을 수 있습니다. 이 경우 마지막 4의 의미는 4개의 Record가 Load되었다는 의미 입니다.
table = "LOCAL_TEST_TABLE_JDBC";
key = "K";
partition = "20140101000000";
control_file_path = "LOCAL_TEST_TABLE.ctl";
data_file_path = "LOCAL_TEST_TABLE.dat";
c.SetFieldSep(',')
c.SetRecordSep('\n')
result = c.Load(table, key, partition, control_file_path, data_file_path)
print result
7.4. IRIS Query
IRIS에서는 기본적인 ANSI SQL의 거의 동일하게 지원을 하지만, CREATE TABLE의 경우에는 IRIS에서 사용하는 옵션을 추가로 적어 주어야 합니다.
7.4.1. CREATE TABLE
CREATE TABLE {table_name} (
{colnum_name} {type},
{colnum_name} {type},
{colnum_name} {type},
…
{colnum_name} {type}
)
datascope [ LOCAL | GLOBAL ]
ramexpire [ n > 0 | 0 ]
diskexpire [ n > 0 | 0 ]
partitionkey [ key_column_name | NONE ]
partitiondate [ part_column_name | NONE ]
partitiondate [ n > 0 | 0 ]
;
7.5. 주의사항
모든 API의 Connection은 쿼리가 종료 후 재접속 해야 합니다.
즉, 두개의 쿼리를 실행할 경우 첫번째 쿼리의 결과를 얻은 후 Connection을 종료후, Connection을 재 접속 후 두번째 쿼리를 실행해야 합니다.
API상에서 쿼리실행도중 에러가 발생할 경우 당시에 사용된 Connection은 강제로 종료가 됩니다. 따라서, 에러가 발생할 경우 재 접속을 해주어야 합니다.