Why?
sqlite는 embedded (내장된) database 소프트웨어로, 웹브라우저 같이 application software안에 local/client storage이다.
기본 기능
- CRATE TABLE
# table 생성
CREATE TABLE extract_urls(title text, url text, user_count INTEGER DEFAULT 1, visit_count INTEGER)
# table이 없을 경우 생성
CREATE TABLE IF NOT EXISTS extract_urls(title text, url text, user_count INTEGER, visit_count INTEGER)
DEFAULT는 그 곳에 다른 값을 주지 않는다면, default 기본값으로 1을 준다는 의미이다.
이외에도 NOT NULL, UNIQUE, CHECK가 존재한다. 아래 link에 자세히 나온다.
https://thinking-jmini.tistory.com/19
- SELECT, WHERE, EXCEPT
SELECT title, url, user_count, visit_count from History_all_users
WHERE url in (SELECT url from sorted_urls where title_token = '"+token+"'
EXCEPT SELECT url from History_"+user_name+"_temp.urls) ORDER by user_count DESC
SELECT 뒤에는 선택할 column을 입력한다.
이 때 * 을 써서 모두 가져올 수 있지만, 우리는 query만 보고 어떤 column을 가져오는지 알 수 있기에, *은 지양한다.
FROM은 History_all_users 라는 table안에서 가져온다. 이는 같은 db 파일에서 존재한다.
만약 다른 db 파일에서 가져오려한다면, 우리는 ATTACH를 써서 받을 것이다. 이는 뒤에서 설명할 예정이다.
SELECT는 WHERE을 통해서 조건을 줄 수 있다. 그대로 해석하면, in 뒤에서 선택한 부분에 History_all_users의 url을 고른다.
EXCEPT는 차집합 연산으로, 합집합(UNION), 교집합(INTERSECTION), 차집합(EXCEPT)으로 3가지가 존재한다.
차집합의 경우는 오른쪽의 data가 있는 부분을 왼쪽 data에서 제거한 후, 왼쪽 data를 보여준다.
아래 링크에 자세히 나와있다.
https://aroundck.tistory.com/5203
- INSERT
# 이는 sqlite3을 python에서 구현할 때 주로 사용.
# Insert 하나만
c1.execute("INSERT INTO extract_urls(title, url, user_count ,visit_count) VALUES (?,?,?,?)", (1,2,3,4))
# Insert 여러번
c1.executemany("INSERT INTO extract_urls(title, url, user_count ,visit_count) VALUES (?,?,?,?)", result)
INSERT는 row에 값을 추가하는 것을 말한다.
query문에서는 VALUES ( )안에 직접 넣어야 하지만, python에서 구현할 때는, ( ) 안에 ?을 해놓고 값을 입력한다.
python에서는 여러번 execute 가능하다. 따라서 executemany로 튜플형태를 한 번에 입력이 가능하다.
- ATTACH
c.execute("ATTACH './History_all_users.db' as History_all_users_temp;")
현재 경로에 있는 db 파일에서 다른 db 파일'을 as table_name으로 가져올 수 있다.
다른 db 파일을 이어주는 역할이라고 생각하면 좋다.
- UPDATE
c1.execute("update urls SET user_count = user_count + 1 where url = 'www.google.co.kr'")
update는 특정한 조건인 곳에 값을 업데이트를 한다.
update table 이름 SET column = 연산 (where로 조건을 줄 수 있다.)
아래는 python.org에서 제공하는 기본 REFERENCE
https://docs.python.org/ko/3/library/sqlite3.html
'대학원 공부 > programming language' 카테고리의 다른 글
Python : basic : 문자열 (format) (0) | 2019.11.22 |
---|---|
Python : basic : list.sort(), sorted (0) | 2019.11.22 |
Python : basic : List -> Dict로 압축, json 출력 (0) | 2019.11.19 |
Numpy & Pandas & Sqlite : sqlite, Add column, 제약조건 (0) | 2019.11.11 |
Numpy & Pandas : Pandas Reference (0) | 2019.11.11 |
댓글