1 SQLite ?
SQLite는 MySQL나 PostgreSQL와 같은 데이터베이스 관리 시스템 (DBMS : database management system)이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다.
대규모 작업에는 적합하지 않지만, 중소 규모라면 속도에 손색이 없다. 또 API는 단순히 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데 하나의 파일만을 사용하는 것이 특징이다.
파이썬에서 sqlite3라는 표준 라이브러리를 기본적으로 제공하고 있기 때문에 이것을 이용해 DB 를 운용할 것이다.
2 프로그램 설치
1. 먼저 https://sqlitebrowser.org/ 에 접속한다.
2. Download 를 누른다.
3. 본인의 운영체게에 맞게 다운로드 받는다.
(필자의 경우 Window 64-bit 운영체제임.)
4. .exe 파일 다운로드가 완료되면 실행을 눌러 프로그램을 설치해준다.
5. 다운로드가 완료되면 다음과 같이 두개의 프로그램이 생성되는데 하단에 있는 DB Browser(SQLite) 를 사용할 것이다.
3 sqlite3 모듈
이제 파이썬으로 코드를 작성하면서 DB를 다뤄보고 브라우저로 그 결과를 확인할 수 있다.
먼저 sqlite3 라이브러리를 사용하기 위해 import 해준다.
그리고 connect(연결)해준다.
Shell 창에 다음과 같이 입력하면 디렉터리에 db파일이 생성된 것을 볼 수 있다.
그리고 conn의 타입을 확인해본 결과 'sqlite3.Connection' 타입인 것을 알 수 있다.
그리고 conn 디렉토리를 확인해 본다.
** dir() : 디렉토리를 확인하거나 구성된 변수들을 탐색할 때 쓰는 함수, 문자열로 안에 있는 값을 리스트형태로 반환한다.
위와 같이 구성된 요소들을 볼 수 있다.
2 DB(데이터 베이스) 접속
이제 DB를 생성하는 쿼리를 실행해보자.
일단 sqlite3 라이브러리 import 해준다.
1
|
from sqlite3 import *
|
cs |
그리고 데이터베이스에 연결해준다. C드라이브 DBMS폴더 안에 저장된다. connect() 해주면 파이썬 파일과 DB가 연결된 상태가 된다.
1
|
conn = connect("C:\\DBMS\\Test.db")
|
cs |
1
|
cur = con.cursor() # 메모리공간 제공
|
cs |
다음 테이블을 생성해준다.
excute("문자열") 를 사용하는 데 이는 커서안에 존재한다. 따라서 다음과 같이 작성한다.
cur.execute("CREATE TABLE 테이블명,(필드명1 타입1,필드명2 타입2, ...)")
1
|
cur.execute("CREATE TABLE PhoneBook,(Name text,PhoneNum text)") # 테이블 생성
|
cs |
생성된 테이블이나 삽입 데이터를 저장해야 한다. commit()으로 닫아주면되는데 commit은 “변경사항을 DB에 반영한다”는 뜻이다. 데이터의 수정 작업에 대한 기록을 임시로 저장하고 실제로 DB에 반영되지 않았기 때문에 최종적으로 DB에 수정내용을 반영하려면 commit() 명령어를 실행해줘야 한다.
1
2
|
con.commit()
con.close()
|
cs |
다음은 데이터 삽입하기이다. 데이터를 한 건 넣으려면 다음과 같이 작성한다.
cur.execute("INSERT INTO 테이블명 VALUES("필드1""필드2, ...")")
1
|
cur.execute("INSERT INTO PhoneBook Values('sooni','010-1234-1234')")
|
cs |
SQLite브라우저로 Test.db 파일을 열어 확인해보면 테이블안에 데이터가 들어간 것을 볼 수 있다.
3 딕셔너리 형태로 저장
이번에는 파이썬 파일창 안에서 테이블을 생성해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 딕셔너리 형태로 저장
from sqlite3 import *
con = connect("C:\\DBMS\\Person_list2.db") # 데이터베이스 연결
cur = con.cursor() # 메모리공간 제공
name = input("이름>")
age = int(input("나이>"))
add = input("주소")
cur.execute("CREATE TABLE list(Name text,Age int,Address text)") # 테이블 생성
cur.execute("INSERT INTO list Values(:Name,:Age,:Address);"
,{'Name':name,'Age':age,'Address':add})
con.commit() # 생성된 테이블이나 삽입 데이터를 저장 꼭 마지막에 commit()으로 닫아주어야 한다.
con.close()
|
cs |
실행하고 다음과 같이 입력한다.
브라우저로 저장된 데이터를 확인해보면 다음과 같다.
4 튜플 형태로 저장
Person_list2 데이터베이스에 튜플형태로 데이터 삽입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from sqlite3 import *
con = connect("C:\\DBMS\\Person_list2.db") # 데이터베이스 연결
cur = con.cursor() # 메모리공간 제공
name = input("이름>")
age = int(input("나이>"))
add = input("주소>")
cur.execute("INSERT INTO list Values(?,?,?)",(name,age,add)) # 테이블 생성
con.commit() # 생성된 테이블이나 삽입 데이터를 저장 꼭 마지막에 commit()으로 닫아주어야 한다.
con.close()
|
cs |
실행 후 다음과 같이 입력해준다.
브라우저로 저장된 데이터를 확인하면 다음과 같다.
"개똥이 8 송파구" 가 추가되었다.
'Database > sqlite3' 카테고리의 다른 글
[Python sqlite3] OperationalError : database is locked (데이터 베이스 잠김 에러) (0) | 2021.04.06 |
---|---|
[Python sqlite3] SQLite - 데이터 읽기·변경·삭제 - SELECT, UPDATE, DELETE, WHERE (0) | 2021.04.05 |
댓글