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

반응형
    반응형

    파이썬에서 SQLite3을 이용해 db파일의 행추가 ,삭제를 해볼까 합니다.

     

    행 추가

    행을 추가하려면 'INSERT INTO 테이블명 VALUES (삽입할 내용)'을 입력합니다.

    삽입할 내용은 테이블과 열이 맞아야 합니다. 그렇지 않으면 오류 발생하고 써지지 않습니다.

    stock이라는 테이블을 만들겠습니다.

     

    import sqlite3 as sq3
    con = sq3.connect('./stocks.db')
    cursor = con.cursor()
    con.commit()
    q = con.execute
    q('SELECT * FROM sqlite_master').fetchall()

     

    현재 테이블은 3 개의 열로 되어 있으니 3개의 내용으로 넣어줍니다.

    아무거나 넣어보겠습니다.

     

    insert = "INSERT INTO stock VALUES('2021-08-26',10000,11000)"    #''을 안하면 빼기로 인식
    cursor.execute(insert)
    con.commit()
    con.close()

     

    뭔가 작업을 하면 con.commit()을 입력해 데이터베이스에 반영하도록 합니다.

    모든 작업을 마치면 데이터베이스를 닫아주어야 합니다. con.close()를 입력해 db를 닫습니다. 이 명령을 하지 않고 종료를 하면 백그라운드에 계속 con이 작동되서 메모리를 잡아먹습니다. 

     

     

    테이블 조회

    여러개의 행을 추가한 후 행 추가가 잘 이루어졌는지 살펴봅시다.

    SELECT 구문을 이용해 확인할 수 있습니다.

    테이블 내용 전체를 한꺼번에 보려면 cursor.fetchall()을 쓰고 한개씩 보고 싶다면 cursor.fetchone()을 씁니다.

    둘다 generator라서 한번 값을 꺼내고 다시 보고싶다면 execute를 실행한 후 fetchall이나 fetchone을 실행합니다.

     

    cursor.fetchall()

    cursor.execute('SELECT *From stock')
    cursor.fetchall()

     

    cursor.fetchone()

    fetchone은 generator 이라서 하나씩 순차적으로 나오고 더이상 나올값이 없으면 아무일도 일어나지 않습니다.

     

     

    원하는 행 조회

    원하는 행을 조회하려면 다음과 같이 WHERE을 이용합니다.

    WHERE은 조건문을 의미합니다. WHERE 뒤에 조건을 붙여주면 조건문이 완성됩니다.

     

    select = "SELECT * FROM stock WHERE date = '2021-08-26'"
    cursor.execute(select)
    cursor.fetchall()

     

     

    원하는 열 조회

    원하는 열만 조회하려면 * 대신 열이름을 써줍니다.

     

    col_select = "SELECT date FROM stock"
    cursor.execute(col_select)
    cursor.fetchall()

     

    선택할 열이 두 개 이상이면 , 로 구분지어주기만 하면 됩니다.

     

    col_select = "SELECT date,open FROM stock"
    cursor.execute(col_select)
    cursor.fetchall()

     

    행 삭제

    전체 행을 삭제하려면 'DELETE FROM 테이블명' 으로 끝을 냅니다.

    테이블 내용만 삭제되고 골조는 그대로 남아있습니다.

     

    cursor.execute("DELETE FROM stock")
    cursor.execute('SELECT *From stock')
    cursor.fetchall()

     

    원하는 행을 삭제하고 싶다면 WHERE을 이용해 할 수 있습니다. 

     

    del_select = "DELETE FROM stock WHERE date = '2021-08-26'"
    cursor.execute(del_select)
    cursor.execute('SELECT *From stock')
    cursor.fetchall()

     

    코드마다 con.commit()을 해주어야 하는데 포스팅내의 코드일부는 생략되어 있습니다. 참고하시기 바랍니다. 

    코드 진행이 되도 con.commit()을 하지 않으면 실제 db파일에는 반영되지 않습니다.

     

     

    관련 포스팅

    [데이터 사이언스/DB] - [SQLite3] 테이블 생성,변경,제거

    댓글

    Designed by JB FACTORY

    ....