Skip to content

3단원: 행 저장하고 다시 읽기

🌐 quickstart/first-cubrid/save-a-row.md의 한국어 학습 경로입니다. 영어 원문이 표준이며, 코드와 출력은 원문과 같습니다.

English: Lesson 3: Save rows and read them back

튜토리얼 전용 작은 테이블을 만들어 행 두 개를 저장하고 커밋한 뒤, 두 번째 연결에서 읽습니다. 처음 만드는 CUBRID 데이터베이스의 3단원입니다.

시작하기 전에

  • 2단원이 Connected to database: testdb를 출력해, 실습 환경이 실행 중이고 연결 설정이 동작하는 것을 확인했어야 합니다.
  • 가상 환경을 활성화한 채 cubrid-cookbook-python 폴더에 있어야 합니다. 새 터미널을 열었다면 cd cubrid-cookbook-python과 source .venv/bin/activate를 다시 실행하세요.

프로그램

02_save_and_verify.py는 자기 전용 테이블 cookbook_first_cubrid_notes를 만들고 행 두 개를 저장합니다. 테이블에 주석(comment)으로 표시를 남겨서, 이후 단계가 이 테이블만 다루게 합니다. 같은 이름의 테이블이 이미 있으면 아무것도 바꾸지 않고 멈춥니다.

핵심 부분:

cursor.execute(
    "CREATE TABLE cookbook_first_cubrid_notes ("
    " id INT AUTO_INCREMENT PRIMARY KEY,"
    " note VARCHAR(100) NOT NULL"
    ") COMMENT = 'created by the cubrid-cookbook first-cubrid tutorial'"
)
for note in ("My first row", "My second row"):
    cursor.execute("INSERT INTO cookbook_first_cubrid_notes (note) VALUES (?)", (note,))
conn.commit()
  • ?는 파라미터 자리 표시자입니다. 값은 Python 인자로 따로 넘기고, pycubrid가 각 값을 올바르게 이스케이프한 값으로 문장에 넣으므로 값이 문장의 뜻을 바꿀 수 없습니다. 값을 SQL 문자열에 직접 붙여 넣지 말고 항상 이렇게 넘기세요. (pycubrid가 값을 바인딩하는 방식: 파라미터화된 쿼리)
  • 변경은 commit()을 호출해야 확정됩니다. pycubrid는 자동 커밋이 꺼진 채로 시작하므로, 마지막 커밋 이후의 모든 변경이 하나의 트랜잭션이 됩니다. commit()은 새 테이블과 두 행을 영구히 저장하고 다른 연결에서도 보이게 합니다.

커밋한 뒤 스크립트는 다른 프로그램처럼 두 번째 독립 연결을 열어 테이블을 읽습니다.

실행하기

python quickstart/first-cubrid/02_save_and_verify.py

확인. 예상 출력:

Created cookbook_first_cubrid_notes and saved 2 rows.
A second connection reads:
  1: My first row
  2: My second row

id 1과 2는 새 테이블의 AUTO_INCREMENT가 매긴 값입니다.

다시 실행하면

첫 실행에서 만든 테이블이 남아 있으므로, 스크립트는 아무것도 바꾸지 않고 멈춥니다.

  • cookbook_first_cubrid_notes is left over from an earlier run.은 튜토리얼 자신의 테이블이 남아 있다는 뜻입니다. 5단원의 정리 스크립트로 지운 뒤 이 단원을 다시 실행하세요.
  • A table named cookbook_first_cubrid_notes already exists and was not created by this tutorial.은 그 테이블이 다른 사람의 것이라는 뜻입니다. 튜토리얼은 아무것도 바꾸지 않고, 그 테이블을 지우지도 않습니다.

다음 단계

저장되기 전에 변경을 되돌려 봅니다. 4단원: rollback.