[SQLite3] 테이블 생성,변경,제거

반응형
    반응형

    파이썬에서 SQL을 간단하게 쓸 수 있는 SQLite3 테이블 생성,변경,제거 방법입니다.

    SQLite3은 파이썬에 내장되어 있어서 파이썬 내에서 바로 쓸 수 있고 

    SQL 구문을 사용하기 때문에 다른 SQL 프로그램과 유사한 문법으로 할 수 있습니다.

    다만, 말그대로 lite 한 버전이기 때문에 시스템 규모가 커지면

    PostgreSQL이나 MySQL 같은 프로그램을 사용하는게 좋습니다.

    입문자용으로 보면 될 것 같습니다.

     

    파일 만들기

    파일이 있어야 데이터를 넣을 수 있기 때문에 파일부터 만들겠습니다.

    connect 메쏘드를 이용하면 해당 db에 연결됩니다. 파일이 없는경우 db 파일을 생성하게 됩니다.

     

    import sqlite3 as sq3
    
    con = sq3.connect('./stocks.db')

     

    탐색기에서 찾아보면 실제로 파일이 만들어진 걸 확인할 수 있습니다.

     

    테이블 생성

    파일이 만들어졌으니 테이블을 만들어 보겠습니다.

    테이블 생성시 각 column마다 데이터 타입을 지정해주어야 하기 때문에

    SQLite3에서 사용하는 데이터 타입을 알아야 합니다.

    SQLite3에서는 표와 같이 5가지의 데이터 타입이 있습니다.

     

    데이터 타입 설명
    NULL NULL 값
    INTEGER 부호있는 정수. 1, 2, 3, 4, 6, or 8 바이트로 저장
    REAL 부동 소수점 숫자. 8 바이트로 저장
    TEXT 텍스트. UTF-8, UTF-16BE or UTF-16-LE 중 하나에 저장
    BLOB Binary Large OBject. 입력 데이터를 그대로 저장
    *BLOB는 이미지, 오디오, 동영상과 같은 큰 data를 hex code로 처리할때 사용됨

     

    테이블을 생성하기 위해 SQL 구문을 사용합니다.

    'CREATE TABLE 테이블명(column1 데이터타입,column2 데이터타입,...)'

    을 넣어주면 됩니다.

    지금은 파이썬에서 sqlite를 빌려 SQL을 다루고 있기 때문에 단순히 SQL구문을 사용하면 안 됩니다.

    항상 execute 메쏘드 안에 SQL구문을 넣어주어서 실행합니다. 

    SQL 구문을 호출하기 위해 cursor라는 객체를 만들어 시작합니다.

     

    cursor = con.cursor()
    query = 'CREATE TABLE stock (Date date, Open integer, Close integer)'
    
    cursor.execute(query)

     

    잘되었다면 output에 위와 같이 나옵니다.

     

     

    테이블이 잘 생성되었는지 확인하려면 다음과 같이 합니다.

    db파일에 어떤 테이블이 있는지 확인할 수 있습니다.

     

    q = con.execute
    q('SELECT * FROM sqlite_master').fetchall()

    맨 밑에 'CREATE TABLE ...' 구문으로 나왔다면 잘 만들어진 것입니다.

     

    테이블명 변경

    테이블명을 변경하고 싶다면 'ALTER TABLE 테이블명 RENAME TO 새 테이블명'을 입력합니다.

    이 또한 SQL 구문이어서 execute의 괄호 안에 넣습니다.

    현재 stock으로 되어있는 이름을 kakao로 바꿔보겠습니다.

     

    alter = 'ALTER TABLE stock RENAME TO kakao'
    cursor.execute(alter)
    q('SELECT * FROM sqlite_master').fetchall()

     

    stock이 kakao로 바뀐것을 볼 수 있습니다.

     

    테이블 제거

    테이블을 제거하려면 'DROP TABLE 테이블명'을 입력합니다.

     

    delete = 'DROP TABLE kakao'
    con.execute(delete)
    q('SELECT * FROM sqlite_master').fetchall()

    테이블이 아무것도 있지 않아서 리스트에 아무 정보가 없습니다. 잘 지워졌습니다.

     

    관련 포스팅

    [SQLite3] 행 추가,삭제,조회

    댓글

    Designed by JB FACTORY

    ....