Python에서 변수 입력을 가진 SQL문 준비 및 실행

변수 입력을 포함하는 SQL문을 준비하고 실행하려면 ibm_db.prepare, ibm_db.bind_paramibm_db.execute 함수를 사용하십시오. 명령문을 준비하면 데이터베이스 서버가 명령문이 다시 실행되는 경우 재사용할 수 있는 데이터 검색을 위해 최적화된 액세스 플랜을 작성하므로 성능이 향상됩니다.

시작하기 전에

ibm_db API에서 연결 함수 중 하나를 호출하여 연결 자원을 얻으십시오. Python에서 IBM을 참조하십시오.

프로시저

매개변수 표시문자를 포함하는 SQL문을 준비하고 실행하려면 다음을 수행하십시오.

  1. ibm_db.prepare 함수를 호출하고 나열된 인수를 전달하십시오.
    연결
    ibm_db.connect 또는 ibm_db.pconnect 함수에서 리턴된 유효한 데이터베이스 연결 자원입니다.
    명령문
    변수 입력이 필요한 컬럼 또는 술어 값에 대한 매개변수 표시문자로 물음표(?)를 포함하는 SQL문이 들어 있는 문자열입니다. 이 문자열은 XMLQUERY 함수가 호출하는 XQuery 표현식을 포함할 수 있습니다.
    옵션
    선택사항: 결과 세트에 대해 리턴할 커서의 유형을 지정하는 사전입니다. 이 매개변수를 사용하여 이 유형의 커서를 지원하는 데이터베이스 서버에 대한 스크롤 가능 커서를 요청할 수 있습니다. 기본적으로 포워드 전용 커서가 리턴됩니다.

    함수 호출이 성공하면 쿼리와 관련된 후속 함수 호출에서 사용할 수 있는 명령문 핸들 자원이 리턴됩니다.

    함수 호출이 실패하면 (리턴)False), ibm_db.stmt_error 또는 ibm_db.stmt_errormsg 함수를 사용하여 오류에 대한 진단 정보를 검색할 수 있습니다.

  2. 선택사항: SQL 문자열의 각 매개변수 표시문자에 대해 ibm_db.bind_param 함수를 호출하고 나열된 인수를 전달하십시오. 입력 값을 매개변수 표시문자에 바인드하면 각 입력 값이 단일 매개변수로 처리되어 SQL 인젝션 공격이 방지됩니다.
    stmt
    ibm_db.prepare 함수에 대한 호출에서 리턴되는 PREPARE문입니다.
    매개변수-숫자
    SQL문에서 매개변수 표시문자의 위치를 나타내는 정수입니다.
    변수
    매개변수 표시문자 대신 사용할 값입니다.
  3. ibm_db.execute 함수를 호출하고 나열된 인수를 전달하십시오.
    stmt
    ibm_db.prepare에서 리턴되는 PREPARE문입니다.
    매개변수
    PREPARE문에 포함된 매개변수 표시문자와 일치하는 입력 매개변수의 튜플입니다.

    ibm_db API에 대한 자세한 정보는 http://code.google.com/p/ibm-db/wiki/APIs을 참조하십시오.

변수 입력을 포함하는 명령문을 준비하고 실행하십시오.

import ibm_db
conn = ibm_db.connect("database","username","password")
sql = "SELECT EMPNO, LASTNAME FROM EMPLOYEE WHERE EMPNO > ? AND EMPNO < ?"
stmt = ibm_db.prepare(conn, sql)
max = 50
min = 0
# Explicitly bind parameters
ibm_db.bind_param(stmt, 1, min)
ibm_db.bind_param(stmt, 2, max)
ibm_db.execute(stmt)
# Process results

# Invoke prepared statement again using dynamically bound parameters
param = max, min, 
ibm_db.execute(stmt, param)

다음에 수행할 작업

SQL문이 하나 이상의 결과 세트를 리턴하는 경우 명령문 자원에서 행 페치를 시작할 수 있습니다.