거울아거울아 스터디 - 6
무엇을 배웠는가?
안영님의 요약을 통해 4장에서 관계형 데이터베이스, sqlite3을 다루는 방법을 공부했습니다.
관계형 데이터베이스
: 관계형 데이터 모델에 기초한 데이터베이스
- 관계형 데이터베이스에서 데이터는 행, 열의 2차원 테이블로 표현
- 테이블에서 고유 키로 각 열을 구별
- 다른 테이블과 연결 가능
SQL
: 관계형 데이터베이스에서 데이터를 다루기 위해 사용하는 일반적인 명령어 집합
- create table - 새로운 테이블을 만듭니다.
- select - 테이블에서 특정한 열 데이터를 읽어옵니다.
- where - 데이터를 특정한 조건에 따라 행 단위로 필터링합니다.
- insert into - 테이블에 데이터를 추가합니다.
파이썬 내장 모듈 sqlite3
- 인메모리(in-memory) 데이터베이스 생성 지원
- 데이터베이스를 별도로 설치하지 않고도, 파이썬 코드를 통해 가벼운 데이터베이스 사용 가능
- SQL 쿼리 언어로 접근 가능
sqlite3 예시
- :memory: 명칭을 사용해 메모리에 데이터베이스를 생성합니다.
- sqlite3.connect() 메서드로 사용할 db 파일에 접근합니다.
- 테이블 만들기
- execute() 메서드로 SQL 쿼리를 실행합니다.
- commit() 메서드로 데이터베이스의 변동사항을 저장합니다.
- 데이터 삽입하기
- 튜플로 이루어진 리스토로 삽입할 데이터를 정의합니다.
- SQL insert into 구문 안에 values(?,?,?,?) 식으로 변수의 위치를 할당합니다.
- excute() 또는 excutemany() 메서드에 SQL문과 데이터를 전달합니다.
- excutemany() 메서드는 복수개의 행 데이터를 한 번에 처리할 수 있습니다.
- 테이블에서 데이터 가져오기
- fetchall() 메서드를 사용해 row에 전체 데이터를 할당합니다.
- 테이블에 새 레코드 삽입하기/갱신하기
- cursor() 메서드로 Cursor 객체를 생성합니다.
- cursor 객체의 execute() 메서드로 SQL문을 실행합니다.
- 새로운 레코드를 삽입할 때 INSERT INTO 구문을 사용합니다.
- 레코드를 갱신할 때 UPDATE 구문을 사용합니다.
- connection 객체의 commit() 메서드로 데이터베이스의 변경사항을 저장합니다.
심화 과정
psycopg2와 sqlalchemy를 활용해 데이터베이스 서버에 접속하고, SQL 쿼리문을 작성해 특정 데이터를 읽어오는 것을 실습했습니다. 또한 jupyter notebook 상에서 로그인 정보를 사용해야 할 때 getpass 모듈을 활용해 패스워드를 입력하는 방법도 배웠습니다.
어땠는가?
실제 업무에서 SQL 쿼리로 데이터를 뽑는 일이 많았는데, 파이썬에서 데이터베이스를 다룰 때도 쿼리를 그대로 쓸 수 있어서 좋았습니다. 특히 심화 시간에 회사에서 사용하는 데이터베이스를 가지고 실습해 볼 수 있어서 더욱 이해하기 편했습니다. 이번 장도 기본 개념 자체는 복잡하지 않았지만, 이것을 활용해 무언가 ‘프로그램’다운 기능을 하게 하려면 더 많은 공부가 필요할 것 같다는 생각이 듭니다. csv, 엑셀, 데이터베이스까지, 이제 ‘파이썬 데이터 분석 입문’에서 ‘데이터’ 부분이 얼마 안 남았네요. 모두들 고생 많으셨고 남은 스터디도 화이팅입니닷