Python DB

Jayce_97·2023년 5월 11일
0

Python 기초

목록 보기
10/10
post-thumbnail

오늘은 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 언어인 SQL중 가장 가벼운 SQLite를 이용는 법을 배워보겠습니다.


SQLite란 SQL + Lite의 합성어로 경량화 시킨 SQL(Structured Query Language)입니다.
가벼운 만큼 복잡하거나 큰 데이터를 보관하는 것에는 적절치 않고, 인코딩도 유니코드만 사용할 수 있기 때문에 사용시 주위가 필요합니다.
하지만 안드로이드,IOS,macOS에 기본적으로 포함되어 있는 만큼 가장 많이 쓰이는 데이터 베이스입니다.


SQLite 버전 확인

input

import sqlite3 
print(sqlite3.version)
print(sqlite3.sqlite_version) 

output

2.6.0
3.40.1

SQLite 설치 및 구동 방법링크를 남기겠습니다.
SQLite를 설치 하지 않아도 다운로드가 되어있는 경우도 있으니 버전 확인을 통해 확인하시기 바랍니다.


SQL 테이블 생성

input

def create():
    conn=sqlite3.connect('books.db') # 파일이 없으면 생성, 있으면 불러옴 
    cursor=conn.cursor() # 커서: sql 명령어를 실행시키는 객체 
    cursor.execute('''
        create table if not exists books (
            title text, 
            publish_date text, 
            publisher text, 
            pages integer , 
            recommend integer 
        )
    ''') # sql 명령어 실행, 테이블이 없으면 만들어짐 
    conn.close()  #커넥션 닫기 
create() 

파일을 만들고 실행시키는 기본적인 구조입니다.
파일 생성(오픈,연결), 실행, 테이블 작성, 닫기가 기본 구조이며, SQL은 닫아주지 않으면 작동에 오류가 생기기 때문에 꼭 닫아 주어야합니다.
create table if not exists books(~~~)의미는
books라는 테이블을 만들고 그 안에 변수를 title text, publish_date text, publisher text, pages integer , recommend integer를 만들겠다는 의미입니다.
예시로 한글 파일을 작성하고 닫지 않으면 파일이름변경이 불가하듯 SQL또한 닫아주어야 추가적인 작업이 가능합니다.


SQL 테이블 값 입력

input

def insert():
    conn=sqlite3.connect('books.db') 
    cursor=conn.cursor()
    cursor.execute("insert into books values ('java','2023-05-11','파이',500,10)")
    sql='insert into books values (?,?,?,?,?)' # 파라미터를 사용하는 방법 
    cursor.execute(sql, ('python','2023-02-11','초록',584,20))
    items=[
        ('빅데이터','2023-04-11','삼성',296,11),
        ('안드로이드','2023-05-12','웅진',526,20),
        ('스프링','2023-03-11','SK',248,15)
    ]
    cursor.executemany(sql, items) # 리스트로 전달하는 방법 
    conn.commit() # DDL의 변경사항 확정 
    conn.close() 
insert()

insert into books values (~~~)는
books라는 테이블에 있는 title text, publish_date text, publisher text, pages integer , recommend integer 값에 각각 ('java','2022-01-01','길벗',500,10)의 값을 넣겠다는 의미입니다.
SQL이 처음이시면 이해하기 어렵겠지만
i = 0 처럼
title text = java라고 이해하시면 쉽습니다.


SQL 테이블 확인

input

def list():
    conn=sqlite3.connect('books.db')
    cursor=conn.cursor()
    cursor.execute('select * from books')
    books=cursor.fetchall() #커서가 가리키는 모든 레코드를 리스트로 저장 
    for book in books:
        print(book)
    conn.close()
list()

output

('java', '2023-05-11', '파이', 500, 10)
('python', '2023-02-11', '초록', 584, 20)
('빅데이터', '2023-04-11', '삼성', 296, 11)
('안드로이드', '2023-05-12', '웅진', 526, 20)
('스프링', '2023-03-11', 'SK', 248, 15)

select * from books의 뜻은
선택 *(전체) books의 라는 뜻으로 books 안에 있는 값들을 전체 불러오겠다는 의미입니다.


SQL commit

input

def update():
    conn=sqlite3.connect('books.db')
    cursor=conn.cursor()
    sql='update books set recommend=? where title=?'
    cursor.execute(sql,(100,'java'))
    conn.commit()
    conn.close() 
update()
list()

('java', '2023-05-11', '파이', 500, 100)
('python', '2023-02-11', '초록', 584, 20)
('빅데이터', '2023-04-11', '삼성', 296, 11)
('안드로이드', '2023-05-12', '웅진', 526, 20)
('스프링', '2023-03-11', 'SK', 248, 15)

commit 한다는 것은 쉽게 업로드 한다고 생각하시면 됩니다.
commit은 모든 변화를 다른 사용자들 또한 볼 수있게 할 수 있는 만큼 중요합니다.
add or update 후에는 꼭 commit을 해줍니다.


SQL Delete(삭제)

input

def delete():
    conn=sqlite3.connect('books.db')
    cursor=conn.cursor()
    sql="delete from books where publisher='파이'"
    #sql='delete from books'
    cursor.execute(sql)
    conn.commit()
    conn.close()
delete()
list()

output

('python', '2023-02-11', '초록', 584, 20)
('빅데이터', '2023-04-11', '삼성', 296, 11)
('안드로이드', '2023-05-12', '웅진', 526, 20)
('스프링', '2023-03-11', 'SK', 248, 15)

delete from books where publisher='파이' 는
삭제한다 books에 있는 '파이'가 들어간 행을
정리하자면 books테이블이 가지고 있는 '파이'가 들어간 행을 삭제한다는 뜻입니다.


오늘은 DB를 다루기 위한 SQL에 대해 배워 보았습니다. 명령 구조문은 조금씩 다르지만 Oracle과 Mysql(Mariadb) 등에서도 비슷한 명령어가 많습니다.
가벼운 SQLite를 통해 익히면서 다른 SQL도 사용해 보시기 바랍니다.
오늘도 긴 글 보시느라 고생 많으셨습니다.

😁 power through to the end 😁

profile
Dreamer

0개의 댓글