ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python sqlite3 사용하기
    DB_study 2021. 10. 27. 01:57

    이번 블로깅은 SQLite라는 라이브러리를 소개할 것이다.  

     

    SQLite

    SQLite는 별도의 서버 프로세스가 필요 없고 SQL 질의 언어의 비표준 변형을 사용하여 데이터베이스에 액세스할 수 있는 경량 디스크 기반 데이터베이스를 제공하는 C 라이브러리입니다. 일부 응용 프로그램은 내부 데이터 저장을 위해 SQLite를 사용할 수 있습니다. SQLite를 사용하여 응용 프로그램을 프로토타입 한 다음 PostgreSQL 이나 Oracle과 같은 더 큰 데이터베이스로 코드를 이식할 수도 있습니다.(출처 : sqlite3)

     

    지원하는 자료형

    SQLite는 기본적으로 다음 형을 지원합니다: NULL, INTEGER, REAL, TEXT, BLOB.

    따라서 다음과 같은 파이썬 형을 아무 문제 없이 SQLite로 보낼 수 있습니다.

    파이썬형 SQLite형
    None NULL
    int INTEGER
    float REAL
    str TEXT
    bytes BLOB

     

    예제

    employee.db

     

    employee_data

    위와 같은 테이블을 생성해 보도록 하겠습니다.

     

    테이블 생성하기.

    CREATE TABLE & INSERT DATA

     

    # employee.db가 없을 경우 새로 생성하며 연결
    # employee.db가 있을경우 해당 db로 연걸
    conn = sqlite3.connect("employee.db")
    
    # conn.cursor을 통해 Cursor를 하나 생성
    cur = conn.cursor()
    
    # conn.execute를 통해 employee_data 테이블을 생성합니다.
    conn.execute('CREATE TABLE employee_data(id INTEGER, name TEXT, nickname TEXT, department TEXT, employment_date TEXT)')
    
    # cur.executemany를 통해 데이터를 INSERT합니다.
    cur.executemany(
        'INSERT INTO employee_data VALUES (?, ?, ?, ?, ?)',
        [(1001, 'Donghyun', 'SOMJANG', 'Development', '2020-04-01 00:00:00.000'),
         (2001, 'Sol', 'Fairy', 'Marketing', '2020-04-01 00:00:00.000'),
         (2002, 'Jiyoung', 'Magician', 'Marketing', '2020-04-01 00:00:00.000'),
         (1002, 'Hyeona', 'Theif', 'Development', '2020-04-01 00:00:00.000'),
         (1003, 'Soyoung', 'Chief', 'Development', '2020-04-01 00:00:00.000')
        ]
    )
    
    # conn.commit()를 통해 변경사항을 저장합니다.
    conn.commit()
    # conn.close()를 통해 db와의 연결 해제합니다.
    conn.close()

    저장한 데이터는 영구적이며 이후 세션에서 사용할 수 있습니다:

     

     

    아래 예제는 간단한 SELECT 문을 실행한 후, 전체 ROW 데이타를 출력하는 예이다.

     

    # employee.db 연결
    conn = sqlite3.connect("employee.db")
    
    # cursor를 생성합니다.
    cur = conn.cursor()
    
    # cur.excute를 이용해 SELECT 쿼리를 실행합니다.
    cur.execute("SELECT * FROM employee_data")
    
    # cur.execute를 통해 가져온 모든 결과의 행을 가져와 리스트로 가져온다.
    rows = cur.fetchall()
    
    # 반복문을 통해 하나씩 row를 출력한다.
    for row in rows:
        print(row)
        
    # conn.close()이용해 db와의 연결을 해제합니다.
    conn.close()

    출력 결과

    데이터를 가져와서 DataFrame형태로 출력하기

     

    # 먼저 DataFrame를 사용하기위해 pandas를 import 하기
    import pandas as pd
    
    # employee.db 연결하기
    conn = sqlite3.connect("employee.db")
    
    # cursor를  생성하기
    cur = conn.cursor()
    
    # cur.execute를 통해 SELRCT 쿼리 실행
    cur.execute("SELECT * FROM employee_data")
    
    # 행 데이터를 가져오기
    rows = cur.fetchall()
    
    # columns열 이름을 가져오기
    cols = [column[0] for column in cur.description]
    
    # 코드를 활요하여 DataFrame을 만들어주기
    data_df = pd.DataFrame.from_records(data=rows, columns=cols)
    
    # conn.close()이용해 db와의 연결을 해제합니다.
    conn.close()
    
    data_df

    출력 결과가 잘 나온것을 확인 할 수 있다.

     

    다음 Table 삭제 코드

     

    conn = sqlite3.connect("employee.db") 
    
    cur = conn.cursor() 
    
    # conn.execute에 DROP 쿼리를 넣어 실행
    conn.execute('DROP TABLE employee_data')
    
    conn.close()

    지금은 막 배우고 있는터라 많이 부족한 내용이다. 좀더 자세하게 알게되면 상세하게 추가로 올려보도록 하자.

    출처: https://somjang.tistory.com/entry/Python-Python에서-Sqlite3-사용하기 [솜씨좋은장씨]

    댓글

Designed by Tistory.