Page 15 -
P. 15

첫 번째 열은 code라고 이름 짓고 한 칸 띈 후 이 열에 저장될 데이터 타입을 정의합니다.
                    varchar(6)이란 최대 길이 6자리의 문자열로 정하겠다는 의미입니다. PRIMARY KEY는 이 code 열
                    을 기본 키로 지정하겠다는 것으로, balance 테이블 안에 중복되는 code 값이 없다는 것을 의미합

                    니다. 또 이 기본 키는 다른 데이터와 구분되는 유일한 값이어야 하므로 빈 값으로 저장할 수 없습
                    니다.


                      Note   기본 키(PRIMARY KEY) 또는 프라이머리 키라고도 하며, 해당 테이블에 저장된 데이터끼리 식별할 수              5
                      있는 유일한 값을 의미합니다. 예를 들어 다음과 같이 학생들의 인적 사항을 저정하는 테이블에서는 ‘성별’ 열을 이용
                      해서 데이터를 특정할 수 없기 때문에 ‘성별’은 기본 키가 될 수 없습니다.                                      프로젝트

                       성별      나이     학번
                       남       26     1001

                       여       25     1002
                       남       26     1003
                       여       20     1004


                      반대로 ‘학번’은 학생들마다 고유한 값으로 중복할 수 없기 때문에 학번을 기본 키로 사용할 수 있습니다. 이처럼 테이
                      블 안에 저장된 데이터끼리 구분할 수 있는 유일한 값을 가진 열을 기본 키로 지정할 수 있습니다.



                    이어서 code 열을 만드는 것처럼 bid_price, quantity, created_at, will_clear_at을 만듭니다.

                    이 열들을 정의할 때 사용하는 데이터 타입 int(20)은 최대 20자리 정수를 의미하며, NOT NULL은
                    이 테이블에 데이터를 삽입할 때 해당 열이 빈 상태로는 저장할 수 없다는 것입니다. 즉, balance
                    테이블에는 bid_price, quantity, created_at 그리고 기본 키로 지정된 code 열을 빈 값으로 저장
                    할 수 없습니다.

                    이렇게 테이블을 만들어 어떤 데이터를 담을지 구조를 먼저 정의한 후 저장할 수 있습니다. 마지
                    막 라인에 등장하는 conn.commit()이란 데이터베이스를 제어한 후 결과를 최종적으로 확정 짓는

                    코드입니다. 결과를 확정 짓지 않으면 그동안 데이터를 저장하는 등 변경된 사항들이 데이터베이
                    스에 반영되지 않습니다. 따라서 커밋(commit)을 수행하여 변경 사항을 저장해 주어야 하지만, 데
                    이터베이스를 사용하면서 매번 커밋해 주는 것은 은근히 귀찮고 불편한 일입니다. 이때 데이터베
                    이스에 연결하는 코드 conn = sqlite3.connect('universe_price.db')에 다음과 같이 isolation_

                    level이라는 옵션을 추가하면 커밋하는 코드를 사용하지 않아도 자동으로 커밋 처리를 할 수 있
                    습니다.




                                                                                                  303





     주식매매_05.indd   303                                                                      2021-09-30   오후 3:20:43
   10   11   12   13   14   15   16   17   18   19   20