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은 강제로 종료가 됩니다. 따라서, 에러가 발생할 경우 재 접속을 해주어야 합니다.