데이터베이스(db)/SQLite

[Python] SQLite 데이터 하나 쓰기, 여러개 쓰기 삭제하기 조건걸기(Write, Delete)

끄적끄적아무거나 2022. 9. 23. 09:16
반응형

 

목차

     

     

     

     

     

    파이썬 SQLite DB 하나 쓰기, 여러개 쓰기

    앞서 데이터베이스에 내용을 입력하는 방법에 대해 알아보았지만 복습 차원에서 정리하면 아래와 같습니다.

     

    INSERT INTO 테이블명 VALUES(입력값)

     

    여러개 값을 입력할 경우 리스트로 값을 입력하고 sqlite 코드는 executemany로 시행합니다. sqlite 명령어는 하나의 입력 방식과 동일 합니다.

     

    실제 아래 예제를 통해 쉽게 이해해 보겠습니다.

     

     

    예제 코드>>

    import sqlite3
    from sqlite3 import Error
    
    def connection():
        try:
            con = sqlite3.connect('test2.db')
            return con
        except Error:
            print(Error)
    
    def create_table(con):
        cursor_db = con.cursor()
        cursor_db.execute("CREATE TABLE checkup(id integer PRIMARY KEY, Name text, Height real, Weight real, Measured_date text)")
        con.commit()
    
    def insert_one(con, one_data):
        cursor_db = con.cursor()   
        cursor_db.execute('INSERT INTO checkup(id, Name, Height, Weight, Measured_date) VALUES(?, ?, ?, ?, ?)', one_data)   
        con.commit()
    
    def insert_bulk(con, bulk_data):
        cursor_db = con.cursor()
        cursor_db.executemany("INSERT INTO checkup VALUES(?, ?, ?, ?, ?)", bulk_data)
        con.commit()
    
    
    con = connection()
    one_data = (3, 'John', '180cm', '90kg', '2022/09/08')
    bulk_data = [(1, 'James', '182cm', '89kg', '2022/09/08'), (2, 'Dan', '178cm', '90kg', '2022/09/08'), (3, 'John', '189cm', '101kg', '2022/09/08')]
    create_table(con)
    insert_bulk(con, bulk_data)

    21~24번 라인: 여러개의 DB 값을 입력 합니다. bulk_data에 입력할 값을 리스트 형태로 넣습니다.

    23번 라인: executemany로 코드를 리스트의 값이 끝날때까지 시행합니다.

    29번 라인: 입력할 리스트 값

     

     

    결과>>

    입력값이 정상적으로 들어 갔음을 확인할 수 있습니다. 

     

     

     

     

     

    파이썬 SQLite DB 삭제하기(조건문, 전체)

     

    이번에는 delete를 사용해서 삭제를 해보겠습니다. 조건을 걸면 해당 조건에 해당하는 내용만 삭제하고 조건이 없으면 테이블의 모든 내용을 삭제합니다.

     

    DELETE FROM 테이블명 where 조건문

     

     

    아래 예제를 통해 쉽게 알아보겠습니다. DB는 앞서 사용한 checkup 테이블과 내용을 그대로 사용하겠습니다.

     

    예제 코드>>

    import sqlite3
    from sqlite3 import Error
    
    def connection():
        try:
            con = sqlite3.connect('test2.db')
            return con
        except Error:
            print(Error)
    
    def delete_condition(con):
        cursor_db = con.cursor()   
        cursor_db.execute('DELETE FROM checkup where id > 2')   
        con.commit()
    
    def delete_all(con):
        cursor_db = con.cursor()   
        cursor_db.execute('DELETE FROM checkup')   
        con.commit()
    
    con = connection()
    delete_condition(con)

    11~14번 라인: 조건으로 id 값이 2보다 큰 값만 삭제 합니다. 

    16~19번 라인: checkup 테이블의 데이터 베이스 내용을 다 삭제하는 함수 이나 이번 예제에서 실행은 안합니다.

     

     

    결과>>

    id 3 값만 삭제되었습니다.

     

     

    반응형