[SQLite3] 행 추가,삭제,조회
- 데이터 사이언스/DB
- 2021. 8. 26.
파이썬에서 SQLite3을 이용해 db파일의 행추가 ,삭제를 해볼까 합니다.
행 추가
행을 추가하려면 'INSERT INTO 테이블명 VALUES (삽입할 내용)'을 입력합니다.
삽입할 내용은 테이블과 열이 맞아야 합니다. 그렇지 않으면 오류 발생하고 써지지 않습니다.
stock이라는 테이블을 만들겠습니다.
import sqlite3 as sq3
con = sq3.connect('./stocks.db')
cursor = con.cursor()
con.commit()
q = con.execute
q('SELECT * FROM sqlite_master').fetchall()
현재 테이블은 3 개의 열로 되어 있으니 3개의 내용으로 넣어줍니다.
아무거나 넣어보겠습니다.
insert = "INSERT INTO stock VALUES('2021-08-26',10000,11000)" #''을 안하면 빼기로 인식
cursor.execute(insert)
con.commit()
con.close()
뭔가 작업을 하면 con.commit()을 입력해 데이터베이스에 반영하도록 합니다.
모든 작업을 마치면 데이터베이스를 닫아주어야 합니다. con.close()를 입력해 db를 닫습니다. 이 명령을 하지 않고 종료를 하면 백그라운드에 계속 con이 작동되서 메모리를 잡아먹습니다.
테이블 조회
여러개의 행을 추가한 후 행 추가가 잘 이루어졌는지 살펴봅시다.
SELECT 구문을 이용해 확인할 수 있습니다.
테이블 내용 전체를 한꺼번에 보려면 cursor.fetchall()을 쓰고 한개씩 보고 싶다면 cursor.fetchone()을 씁니다.
둘다 generator라서 한번 값을 꺼내고 다시 보고싶다면 execute를 실행한 후 fetchall이나 fetchone을 실행합니다.
cursor.fetchall()
cursor.execute('SELECT *From stock')
cursor.fetchall()
cursor.fetchone()
fetchone은 generator 이라서 하나씩 순차적으로 나오고 더이상 나올값이 없으면 아무일도 일어나지 않습니다.
원하는 행 조회
원하는 행을 조회하려면 다음과 같이 WHERE을 이용합니다.
WHERE은 조건문을 의미합니다. WHERE 뒤에 조건을 붙여주면 조건문이 완성됩니다.
select = "SELECT * FROM stock WHERE date = '2021-08-26'"
cursor.execute(select)
cursor.fetchall()
원하는 열 조회
원하는 열만 조회하려면 * 대신 열이름을 써줍니다.
col_select = "SELECT date FROM stock"
cursor.execute(col_select)
cursor.fetchall()
선택할 열이 두 개 이상이면 , 로 구분지어주기만 하면 됩니다.
col_select = "SELECT date,open FROM stock"
cursor.execute(col_select)
cursor.fetchall()
행 삭제
전체 행을 삭제하려면 'DELETE FROM 테이블명' 으로 끝을 냅니다.
테이블 내용만 삭제되고 골조는 그대로 남아있습니다.
cursor.execute("DELETE FROM stock")
cursor.execute('SELECT *From stock')
cursor.fetchall()
원하는 행을 삭제하고 싶다면 WHERE을 이용해 할 수 있습니다.
del_select = "DELETE FROM stock WHERE date = '2021-08-26'"
cursor.execute(del_select)
cursor.execute('SELECT *From stock')
cursor.fetchall()
코드마다 con.commit()을 해주어야 하는데 포스팅내의 코드일부는 생략되어 있습니다. 참고하시기 바랍니다.
코드 진행이 되도 con.commit()을 하지 않으면 실제 db파일에는 반영되지 않습니다.
관련 포스팅
'데이터 사이언스 > DB' 카테고리의 다른 글
Mysql root 비밀번호 setup error(mysql secure installation) (0) | 2022.08.11 |
---|---|
MySQL 비밀번호 변경(리눅스) (0) | 2022.08.09 |
DB browser for sqlite 설치 및 사용법 (0) | 2022.01.24 |
[SQLite3] 테이블 생성,변경,제거 (0) | 2021.08.23 |
[MySQL] MySQL 설치 (0) | 2021.06.19 |