Python/Python기초

Python 33_ Database 2 for-in 구문을 사용한 select 결과 처리, with as 구문의 적용

Codezoy 2020. 1. 6. 17:16


"""
oracle_config.py
Oracle 데이터베이스 서버에 접속(로그인)하기 위해 필요한 정보들을 정의
"""


     # 사용자 이름
     user = 'scott'

     # 비밀번호
     pwd = 'tiger'

     # 데이터베이스 서버 주소: DSN(Data Source Name)
     dsn = 'localhost:1521/orcl'



>>Oracle 데이터베이스 서버에서 select 구문 실행, 결과 확인
현재 프로젝트 디렉토리 상태




for 변수 in 커서:
    실행문
for-in 구문에서 cursor.fetchone()의 결과를 변수에 전달


import cx_Oracle
import lec08_database.oracle_config as cfg

# connection 설정
connection = cx_Oracle.connect(cfg.user,
cfg.pwd,
cfg.dsn)

# cursor 설정
cursor = connection.cursor()

# SQL 문장 실행
cursor.execute('select * from dept')

# select 결과 처리
for row in cursor:
     print(row)

실행 결과
(10, 'ACCOUNTING', 'NEW YORK')
(20, 'RESEARCH', 'DALLAS')
(30, 'SALES', 'CHICAGO')
(40, 'OPERATIONS', 'BOSTON')


# cursor 종료
cursor.close()

# connection 종료
connection.close()




>>with .. as 구문의 적용

with ... as 구문을 사용하면
cursor.close()와 connection.close()가 자동으로 호출된다.

with cx_Oracle.connect(cfg.user, cfg.pwd, cfg.dsn) as conn:
     with conn.cursor() as cursor:
          cursor.execute('select empno, ename, deptno from emp')
          for row in cursor:
               print(row)

실행 결과
(7369, 'SMITH', 20)
(7499, 'ALLEN', 30)
(7521, 'WARD', 30)
(7566, 'JONES', 20)
(7654, 'MARTIN', 30)
(7698, 'BLAKE', 30)
(7782, 'CLARK', 10)
(7788, 'SCOTT', 20)
(7839, 'KING', 10)
(7844, 'TURNER', 30)
(7876, 'ADAMS', 20)
(7900, 'JAMES', 30)
(7902, 'FORD', 20)
(7934, 'MILLER', 10)