[SQLite3] 테이블 생성,변경,제거
- 데이터 사이언스/DB
- 2021. 8. 23.
파이썬에서 SQL을 간단하게 쓸 수 있는 SQLite3 테이블 생성,변경,제거 방법입니다.
SQLite3은 파이썬에 내장되어 있어서 파이썬 내에서 바로 쓸 수 있고
SQL 구문을 사용하기 때문에 다른 SQL 프로그램과 유사한 문법으로 할 수 있습니다.
다만, 말그대로 lite 한 버전이기 때문에 시스템 규모가 커지면
PostgreSQL이나 MySQL 같은 프로그램을 사용하는게 좋습니다.
입문자용으로 보면 될 것 같습니다.
파일 만들기
파일이 있어야 데이터를 넣을 수 있기 때문에 파일부터 만들겠습니다.
connect 메쏘드를 이용하면 해당 db에 연결됩니다. 파일이 없는경우 db 파일을 생성하게 됩니다.
import sqlite3 as sq3
con = sq3.connect('./stocks.db')
탐색기에서 찾아보면 실제로 파일이 만들어진 걸 확인할 수 있습니다.
테이블 생성
파일이 만들어졌으니 테이블을 만들어 보겠습니다.
테이블 생성시 각 column마다 데이터 타입을 지정해주어야 하기 때문에
SQLite3에서 사용하는 데이터 타입을 알아야 합니다.
SQLite3에서는 표와 같이 5가지의 데이터 타입이 있습니다.
데이터 타입 | 설명 |
NULL | NULL 값 |
INTEGER | 부호있는 정수. 1, 2, 3, 4, 6, or 8 바이트로 저장 |
REAL | 부동 소수점 숫자. 8 바이트로 저장 |
TEXT | 텍스트. UTF-8, UTF-16BE or UTF-16-LE 중 하나에 저장 |
BLOB | Binary Large OBject. 입력 데이터를 그대로 저장 *BLOB는 이미지, 오디오, 동영상과 같은 큰 data를 hex code로 처리할때 사용됨 |
테이블을 생성하기 위해 SQL 구문을 사용합니다.
'CREATE TABLE 테이블명(column1 데이터타입,column2 데이터타입,...)'
을 넣어주면 됩니다.
지금은 파이썬에서 sqlite를 빌려 SQL을 다루고 있기 때문에 단순히 SQL구문을 사용하면 안 됩니다.
항상 execute 메쏘드 안에 SQL구문을 넣어주어서 실행합니다.
SQL 구문을 호출하기 위해 cursor라는 객체를 만들어 시작합니다.
cursor = con.cursor()
query = 'CREATE TABLE stock (Date date, Open integer, Close integer)'
cursor.execute(query)
잘되었다면 output에 위와 같이 나옵니다.
테이블이 잘 생성되었는지 확인하려면 다음과 같이 합니다.
db파일에 어떤 테이블이 있는지 확인할 수 있습니다.
q = con.execute
q('SELECT * FROM sqlite_master').fetchall()
맨 밑에 'CREATE TABLE ...' 구문으로 나왔다면 잘 만들어진 것입니다.
테이블명 변경
테이블명을 변경하고 싶다면 'ALTER TABLE 테이블명 RENAME TO 새 테이블명'을 입력합니다.
이 또한 SQL 구문이어서 execute의 괄호 안에 넣습니다.
현재 stock으로 되어있는 이름을 kakao로 바꿔보겠습니다.
alter = 'ALTER TABLE stock RENAME TO kakao'
cursor.execute(alter)
q('SELECT * FROM sqlite_master').fetchall()
stock이 kakao로 바뀐것을 볼 수 있습니다.
테이블 제거
테이블을 제거하려면 'DROP TABLE 테이블명'을 입력합니다.
delete = 'DROP TABLE kakao'
con.execute(delete)
q('SELECT * FROM sqlite_master').fetchall()
테이블이 아무것도 있지 않아서 리스트에 아무 정보가 없습니다. 잘 지워졌습니다.
관련 포스팅
'데이터 사이언스 > 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.26 |
[MySQL] MySQL 설치 (0) | 2021.06.19 |