Python의 SQLite
- 데이터베이스 관리 시스템(DBMS) 중 하나로 오라클이나 SQL 서버만큼 성능이 좋지는 않지만 무료라는 장점이 있다.
- 다음 사이트에서 다운로드 받을 수 있지만 Python은 SQLite에 대한 라이브러리를 기본 내장하고 있기 때문에 우리는 따로 다운로드 받지 않을 것이다.
- 실습 코드는 다음 책을 참고하였습니다.
함수
- connect()
- DB파일과 연결하여 데이터베이스를 여는 함수이다.
- DB 파일과 연결한 후 연결 객체의 cursor 메서드로 커서 객체를 구한다.
- 여기서 커서는 SQL문을 실행하고 결과를 읽는 객체이다.
con = sqlite3.connect('DB 파일')
테이블 생성
- CREATE
- 테이블을 생성할 때 사용되는 명령이다.
CREATE TABLE __table 이름__
(컬럼명1 DATATYPE [DEFAULT 형식],
컬럼명2 DATATYPE [DEFAULT 형식],
컬럼명3 DATATYPE [DEFAULT 형식])
- 이제 간단한 DB를 하나 만들어보자
- 사용자의 이름, 전화번호, 거주지를 저장하는 Table을 만들어보자
import sqlite3
con = sqlite3.connect('addr.db')
cursor = con.cursor()
cursor.execute("DROP TABLE IF EXISTS tblAddr")
cursor.execute("""CREATE TABLE tblAddr
(name CHAR(16) PRIMARY KEY, phone CHAR(16), addr TEXT)""")
cursor.execute("INSERT INTO tblAddr VALUES ('김상형','123-4567','오산')")
cursor.execute("INSERT INTO tblAddr VALUES ('한경은','555-1004','수원')")
cursor.execute("INSERT INTO tblAddr VALUES ('한주완','444-1092','대전')")
con.commit()
cursor.close()
con.close()
테이블 조회
- SELECT
- 테이블의 데이터를 조회할 때 사용하는 명령이다.
SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
- fetchall()
- 모든 레코드를 한꺼번에 읽어
list
로 리턴한다. 이 때 list에 담기는 레코드는tuple
이다.
- 모든 레코드를 한꺼번에 읽어
- fetchone()
- 레코드를 하나만 읽는 함수이다.
record = cursor.fetchone()
# or
record = cursor.fetchall()
- 방금 생성한 DB에 데이터가 잘 저장되었는지 확인해보자
- 이 때 사용되는 함수가 우리가 잘 알고 있는
SELECT
이다.
import sqlite3
con = sqlite3.connect('addr.db')
cursor = con.cursor()
cursor.execute("SELECT * FROM tblAddr")
table = cursor.fetchall()
for record in table:
print("이름 : %s, 전화 : %s, 주소 : %s" %record)
cursor.close()
con.close()
import sqlite3
con = sqlite3.connect('addr.db')
cursor = con.cursor()
cursor.execute("SELECT addr FROM tblAddr WHERE name = '김상형'")
record = cursor.fetchone()
print("김상형은 %s에 살고 있습니다" % record)
cursor.close()
con.close()
테이블 수정 및 삭제
- UPDATE
- record의 특정 필드 값을 수정할 때 사용되는 명령이다.
- 일괄 수정이 아닌 특정 조건에 맞는 record를 수정하기 때문에 주로 WHERE절과 함께 사용된다.
UPDATE 테이블명
SET 수정되어야 할 컬럼명 = 수정되기를 원하는 새로운 값
WHERE 변경 데이터 조건 컬럼 = 선택 조건 값
- 갑자기 아까 만든 테이블이 마음에 안 든다.
- 데이터를 고쳐보자
import sqlite3
con = sqlite3.connect('addr.db')
cursor = con.cursor()
cursor.execute("UPDATE tblAddr SET addr = '제주도' Where name = '김상형'")
con.commit()
cursor.close()
con.close()
-
오늘은 이렇게 간단한 SQLite 명령을 알아보았다.
-
이를 활용해서 더 많은 프로젝트를 진행해보자! —
End