📜 국비 학원을 다니며 배운 내용을 일기 형식으로 작성하고자 함에 정의를 두며
📜 본인이 알고 있는 내용보다 더 좋은 방법 혹은 툴 등을 공유 하고, 공유 받을 수 있는 기회의 창으로 공개한다
본인은 DB Browser를 통해 sql 실행 명령을 하고 데이터 미리보기에 활용하고 있다
( 더 좋은 툴이 있다면 알려주세용 :D )
생성된 DB File을 python에서 출력하고 수정해보자
💿 임의의 데이터 파일을 생성한다 ( file name : newTest_02.db / table name : sample)
python 에서 sqlite 의 실행 명령을 내리기 위해선 sqlite3가 필요하고
sqlite3 에 대한 connect 및 cursor 설정이 필요하다
해당 내용은 아래와 같다
import sqlite3 as sql # as sql 명령으로 sqlite3 라이브러리를 sql이란 변수로 호출할 수 있다
conn = sql.connect(".db 파일 full path") # 출력 혹은 수정하고 싶은 파일의 full path를 connect 시켜준다
cmd = conn.cursor()
sqlite3 sql 실행 명령을 위한 준비 완료
sqlite DB Browser 에서의 데이터를 출력해보기 위한 실행명령은 아래와 같다
select * from "테이블명" # sql 데이터 실행 명령
위의 명령을 sql 에서 실행하게 되면 해당 테이블의 데이터를 보기 좋게 출력해준다
하지만 python 에서 db 파일을 읽기 위해선 특정 명령이 필요하다
파일을 읽는 것 뿐만 아니라 python 에서 특정 행동을 취할 수 있는 여러 명령이 있는데
해당 명령들을 살펴본 후, 응용해보자
먼저 우리가 가장 위에 작성한 명령문을 살펴보면
sql 을 내가 가진 경로의 파일과 connect 시켜주고
cmd 라는 변수에 connect 된 파일의 커서를 지정했다
변수가 꼭 cmd 여야 하는 것은 아니지만 가장 많이 쓰이는 명령이므로 쉬운 변수로 염두해두자
이 cmd 를 활용하여 여러 행동을 취할 수 있는데 그 명령어들은 아래와 같다
cmd.execute("sql 실행문") # sql 에서 쓰던 실행문을 그대로 써주면 된다(select, insert, update, delete ...)
cmd.fetchone() # execute 시킨 실행문에 해당하는 데이터의 1개 레코드 불러오기
cmd.fetchall() # execute 시킨 실행문에 해당하는 데이터의 모든 레코드 불러오기
cmd.fetchmany() # execute 시킨 실행문에 해당하는 데이터의 여러 레코드 불러오기
에디터 안에서 cmd. 만 쳐봐도 많은 메소드들이 있지만 우선적으로 위 코드에 대해 실행하고 알아보도록 하자
[ cmd.execute("sql 실행문") ]
여기서 의미하는 sql 실행문은 말 그대로 sql 에서 데이터 정제 혹은 미리보기를 위해 시행했던 코드들을 의미한다
ex) select * from "table name"
: "table name" 에 해당하는 테이블의 모든 데이터를 보여준다
이 select * from "table name" 을 execute 괄호 안에 써주면 해당 sql 명령을 python 에서 말 그대로 실행 가능케 해준다
이 실행문 안에는 select, insert, upload, delete 등 sql 실행문에 해당하는 명령을 기입할 수 있고,
필요에 따라 바꾸어 주며 execute 시켜준다
현재 우리가 하고자 하는 것은 db 파일의 데이터를 모두 보고 출력하려고 하는 것이기에 해당하는 select 구문을 활용한다
import sqlite3 as sql
conn = sql.connect("file path") # file path : db 파일이 존재하고 있는 경로
cmd = conn.cursor()
cmd.execute("select * from sample") # sample : 열고자 하는 db 파일의 table name
이렇게 execute 해준 테이블을 그대로 출력해보면 외계어처럼 출력이 되고
중간에 알아볼 수 있는 설명은 어떠한 존재가 object 로 설정되었다는 건 알아볼 수 있을 것이다
※ execute 만으로는 데이터의 내용을 출력할 순 없는데
이는 버퍼라는 임의의 공간에 데이터가 저장되어 있을 뿐, 출력되지는 못하는 상태이기 때문이다
(틀린 내용이 있으면 언제든지 지적 환영입니다)
이 execute 된 데이터를 fetch 명령어를 통해 버퍼에서 가지고 오게 되고,
fetch 된 데이터를 python 에서 print() 를 활용하여 출력해주면
정상적으로 모습을 확인할 수 있다
아래는 위 내용을 코드로 작성한 모습이다
import sqlite3 as sql
conn = sql.connect("file path")
cmd = conn.cursor()
cmd.execute("select * from sample")
l = cmd.fetchall()
print(l)
# 결과 : [(1, 'James', '빨래바구니', 'vjr932'), (2, '무야호', '세탁기', 'ipc837'), (3, 'Chris', '영문책', 'hgn537'), (4, '그리핀도르', '모자', 'skv443')]
cmd.fetchall() 이란 명령어를 l 이란 변수에 넣고
l 을 출력했을 때의 결과값은 위 주석과 같다
잘 살펴보면 해당 글 가장 위에 보여진 데이터의 레코드를 그대로 가져왔으며, 필드명은 가져오지 않는다
또한 리스트 안의 값으로 들어오지만 각 레코드는 tuple 형태로 이루어져 있다
▷ cmd.fetchone()
import sqlite3 as sql
conn = sql.connect("file path")
cmd = conn.cursor()
cmd.execute("select * from sample)
l = cmd.fetchone()
print(l)
# 결과 : (1, 'James', '빨래바구니', 'vjr932')
fetchone() 의 경우 1개의 레코드를 1개의 튜플로 반환한다
'Python' 카테고리의 다른 글
Python 클래스와 객체 (0) | 2023.03.05 |
---|---|
Python 과 File (0) | 2022.09.07 |
파이썬 딕셔너리(Python Dictionary) (0) | 2022.09.06 |
튜플(Tuple) (0) | 2022.09.06 |