플그래밍/파이써언

[파이썬] SQLite3로 데이터베이스 이해하기: SQL 기본 튜토리얼

훗티v 2023. 8. 10. 08:21
728x90
반응형

오늘은 서버가 필요없는 가볍고 간단한 SQLite으로 SQL의 기초에 대해서 알아볼까해요. 

 

SQL이라는 단어만 들어도 거부감이 들기 시작하는데요. SQLite은 설치 없이 바로 사용 할 수 있어 SQL을 처음 접하는 사람에게는 최고가 아닐까 싶네요. 

 

먼저 sqlite3을 불러올께요

파이썬 기본 설치 패키지에 포함되어있기 때문에 따로 설치할 필요 없습니다

import sqlite3

conn = sqlite3.connect("example.db")
c = conn.cursor()

c.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
conn.commit()
conn.close()

 

먼저 데이타베이스에 연결을 해야겠죠

conn = sqlite3.connect("example.db")

 

연결 한 후에는 커서를 지정해줘야 한데요

이 커서로 SQL 명령어를 전달하는 것 같네요

일단 시키는대로

c = conn.cursor()

 

c라는 커서에 execute 명령어를 추가해서 SQL에 접근해볼께요

CREATE TABLE (만들어라 테이블을)

students (students라는 테이블을)

id INTEGER PRIMARY KEY (id는 INTEGER 타입이고 PRIMARY KEY이다)

name TEXT (name은 TEXT 타입)

age INTEGER (age도 INTEGER 타입)

대충 이런 얘기 일까요

c.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

 

실행이 끝나면 무조건 커밋, 클로즈

왜 인지는 나중에 이해해도 되지 않을까요

일단 무조건 반복 연습

conn.commit()
conn.close()

 

이렇게 실행을 해보면 .py파일과 동일한 폴더에 example.db가 생성된 것을 볼 수 있어요

SQL이 이렇게 쉬운거였다니...

생겼다!

 

이제 데이타베이스의 기본인 CRUD (Create, Read, Update, Delete) 정도는 할 줄 알아야하는데

먼저 db파일에 어떤 테이블이 있는지부터 확인해볼께요

연결 > 커서 > 실행(명령어) > 커밋 > 닫기

conn = sqlite3.connect("example.db")
c = conn.cursor()

tables = c.execute("SELECT name FROM sqlite_master WHERE type='table'")
conn.commit()

for name in tables:
    print(name[0])

conn.close()

 

students이라는 테이블이 보이네요

빈 테이블이지만 내용도 확인해볼께요

c.execute("SELECT * FROM students")
rows = c.fetchall()
for row in rows:
    print(row)

 

빈 테이블에 데이타를 입력해볼께요

커서에 execute로 명령어를 입력하는건 똑같고

INSERT INTO 테이블명 (테이블명에 추가)

(name, age) (name, age열에 각각)

VALUES (?, ?) 무엇을?

("훗티", 1) 이름과 나이를

처음에는 이해할 필요 없어요

어짜피 100번 정도 반복하면 익숙해져요 

c.execute("INSERT INTO students (name, age) VALUEs (?, ?)", ("훗티", 1))

 

추가되었는지 조회해볼께요

c.execute("SELECT * FROM students")
rows = c.fetchall()
for row in rows:
    print(row)

 

첫번째 1은 id (PRIMARY KEY라고 설정한 부분)

두번째 '훗티'는 name

세번째 1은 age

가 되겠네요

이번에는 기존 데이타를 UPDATE로 수정해볼께요

id가 1인 데이타의 이름을 '훗훗'으로 바꿔볼께요

students 테이블 아이템중 id가 1인 아이템의 name을 "훗훗"으로 변경

c.execute("UPDATE students SET name = ? WHERE id = ?", ('훗훗', 1))

이번에는 지워볼께요

students 테이블 아이템중 id가 1인 아이템을 지우기

c.execute("DELETE FROM students WHERE id = ?", (1,))

 

테이블까지 지워볼까요

import sqlite3

conn = sqlite3.connect("example.db")
c = conn.cursor()

c.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

tables = c.execute("SELECT name FROM sqlite_master WHERE type='table'")
conn.commit()

print("테이블", end=": ")
for name in tables:
    print(name[0])

c.execute("DROP TABLE students")

print("테이블", end=": ")
for name in tables:
    print(name[0])

conn.commit()
conn.close()

 

그 외에도 데이타를 관리하는 여러 방법이 있지만 일단 기초적인 부분부터 익숙해질때까지 반복!

 

 

 

 

 

 

반응형