일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- copyWIth
- linux
- 코딩
- 리눅스
- command
- 명령어
- freezeD
- riverpod
- python
- 디자인패턴
- Code Generation
- vscode
- dart
- 맥
- 개발
- 유데미
- flutter
- 프로그래밍
- 가상환경
- 플러터
- 도서
- 리버팟
- ListTile
- 유데미 러닝크루
- 책
- 파이썬
- ExpansionTile
- 다트
- 개발자
- 유데미 코리아
- Today
- Total
승상의 코딩 블로그
파이썬 - sqlite3 라이브러리 본문
sqlite 는 언제 쓰는게 좋을까요?
다양한 이유가 있겠지만 저는 "데이터베이스를 사용하기 위한 별도의 프로그램이 필요없다." 라는 이유가 가장 큰 것 같습니다.
또한, 데이터베이스가 간단히 파일 하나로 만들어지기 때문에 파일 하나만 있으면 어디에서든 사용할 수 있습니다
* 다른 데이터에 비해서 간단하기 때문에 가벼운 어플리케이션을 만들 때 자주 사용합니다.
일단! 데이터 확인을 위한 환경 구축
단순한 텍스트보다 효율적이고 안정적으로 데이터를 저장하기 위해, 데이터베이스는 각자의 형식이 있습니다.
그러므로, 데이터베이스 파일은 단순히 메모장으로 열 수 없습니다.
sqlite3 에 "저장된 데이터를 보기 위한 환경"을 먼저 구축해 보겠습니다.
VsCode 의 Extension 에서 sqlite3 를 설치합니다.
나중에 DB 파일을 만들면 아래와 같이 저장될 것입니다.
user.db 를 선택하고, ctrl + shift + p (pallete 실행 단축키) 를 누르고 ">SQLite: Open Database" 를 입력합니다.
녀VS Code 의 Explorer 창에 SQLITE EXPLORER 가 생길 것입니다.
user.db 안에 User 테이블이 있고, 테이블의 구조를 볼 수 있네요.
Users 옆의 play 버튼을 누르면, Users 테이블 안에 들어있는 데이터를 조회할 수 있습니다.
데이터 베이스 연결
import sqlite3
conn = sqlite3.connect('./user.db')
# 경로에 파일이 없다면 파일을 생성 후 연결합니다.
# 경로에 파일이 있다면 파일과 연결합니다.
단순한 테스트를 위해서는 in memory(RAM) 형태로 데이터베이스를 생성할 수 있습니다. 그러나 아래처럼 써본적은 없습니다.
conn = sqlite3.connect(:memory:)
데이터베이스를 연결하는 객체를 만든 이후, cursor 객체를 통해 SQL 쿼리를 실행할 수 있습니다.
cur = conn.cursor()
테이블 생성
cur(cursor) 객체의 excute 를 사용하면 쿼리문을 사용할 수 있스빈다.
# 1줄로 표현
# cur.execute("CREATE TABLE Users(userName TEXT, gender TEXT);")
# 여러줄로 표현
cur.execute("""CREATE TABLE Users(
userName TEXT,
gender TEXT);
""")
conn.commit()
한줄로 보면 각 데이터를 보기 힘들기 때문에, 저는 여러줄로 적습니다. """("가 3개)를 사용하면 여러줄로 적어줄 수 있습니다.
쿼리를 실행하고, conn(connection) 객체의 commit 를 수행해야지만 database 에 적용됩니다.
데이터 추가
# 1. Query 그대로 사용
cur.execute("INSERT INTO Users VALUES('SeungSang', 'male');")
# 2. 파라미터 사용
user = ('SeungSang', 'male')
cur.execute("INSERT INTO Users VALUES(?, ?);", user)
# 마지막은 commit 으로 반영
conn.commit()
한번에 여러 데이터를 한번에 추가할 수도 있습니다.
manyUsers = [('SeungSang', 'male'), ('Yuri', 'female')]
cur.executemany("INSERT INTO Users VALUES(?, ?);", manyUsers)
conn.commit()
데이터 조회 (fetchone, fetchmany, fetchall)
fetchone 을 통해 조회된 데이터에서 첫번째 데이터만 가져올 수 있습니다.
cur.execute("SELECT * FROM Users;")
user = cur.fetchone()
print(user) # 출력 : ('SeungSang', 'male')
fetchmany 를 통해 조회된 데이터를 여러개 가져올 수도 있습니다.
fetchmany 로 넘겨주는 인자의 갯수만큼 가져옵니다. 만약, 3개를 가져오고 싶은데 조회된 데이터가 2개라면 2개만 가져옵니다.
cur.execute("SELECT * FROM Users;")
users = cur.fetchmany(2)
print(users) # 출력 : [('SeungSang', 'male'), ('Yuri', 'female')]
fetchall 을 사용하면, 조회된 모든 데이터를 가져올 수 있습니다.
cur.execute("SELECT * FROM Users;")
all_users = cur.fetchall()
print(all_users) # 출력 : [('SeungSang', 'male'), ('Yuri', 'female')]
데이터 삭제
삭제도 execute 를 통해 쿼리문을 사용하면 됩니다.
cur.execute("DELETE FROM Users WHERE userName='SeungSang';")
conn.commit()
'Python (파이썬)' 카테고리의 다른 글
디자인 패턴 - 퍼사드 패턴(Facade Pattern) with 파이썬(python) (0) | 2023.07.10 |
---|---|
디자인 패턴 - 빌더 패턴(Builder Pattern) with 파이썬(python) (0) | 2023.07.09 |
파이썬 - staticmethod (0) | 2023.05.29 |
디자인 패턴 - 팩토리 패턴(Factory Pattern) with 파이썬(python) (2) | 2023.05.29 |
self 의 역할 (함수의 메모리) (0) | 2023.01.23 |